我有一个UIDatePicker和一个按钮。当我按下按钮时,我想在日志中显示消息“设置x的提醒”,其中x是日期选择器显示的时间。
每次我按下按钮时,记录的时间正好落后于选择器显示的时间(选择器显示的时间是我当前的时间)。我怀疑这和时区有关。我住在格林尼治时间+2时区(我想是+3,因为我们是夏令时)。
您知道我如何使记录的时间与显示的时间相同吗?
下面是当我按下按钮时执行的方法。谢谢。
- (IBAction)addReminder:(id)sender {
[self.datePicker setTimeZone:[NSTimeZone systemTimeZone]];
NSLog(@"Setting a reminder for %@", self.datePicker.date);
}
发布于 2015-09-09 13:04:26
NSDate
是某个时刻的简单表示,它不了解您的本地时间。当您记录它(实际上,当description
)消息被发送时,它使用GMT来显示自己。
UIDatePicker
默认使用您的时区(请参阅ref/occ/instp/UIDatePicker/timeZone)。
所以,下面是它的工作原理:
NSDate
。NSDate
,因为它对时区一无所知,所以它只是将自己显示为格林尼治标准时间。要显示您的日期,您应该使用NSDateFormatter
。它具有Timezone属性:ref/occ/instp/NSDateFormatter/timeZone
您还可以使用NSCalendar
及其组件。
您应该阅读本指南:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/DatesAndTimes/DatesAndTimes.html因为日期、格式和日历在Cocoa中并不十分清楚,除非您理解它的概念。
发布于 2017-06-16 10:33:35
试试这个..。
NSDate *now = [[NSDate alloc] init];
[self.datePicker setDate:now];
[self.picker setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:2*60*60]]; // GMT+2 Your timeZone
NSLog(@"Setting a reminder for %@", self.datePicker.date);
https://stackoverflow.com/questions/32479892
复制相似问题