Ios 数据采集器时间

Ios 数据采集器时间,ios,objective-c,uidatepicker,Ios,Objective C,Uidatepicker,我有一个选择器和一个按钮。当我按下按钮时,我想在日志中显示消息“设置x提醒”,其中x是日期选择器显示的时间 每次我按下按钮,记录的时间正好比选择器显示的时间晚3小时(选择器显示的时间是我的当前时间)。我怀疑这和时区有关。我住在GMT+2时区(我想是+3,因为我们现在是夏令时) 你知道我如何使记录的时间与显示的时间相同吗 下面是我按下按钮时执行的方法。谢谢 - (IBAction)addReminder:(id)sender { [self.datePicker setTimeZone:[

我有一个选择器和一个按钮。当我按下按钮时,我想在日志中显示消息“设置x提醒”,其中x是日期选择器显示的时间

每次我按下按钮,记录的时间正好比选择器显示的时间晚3小时(选择器显示的时间是我的当前时间)。我怀疑这和时区有关。我住在GMT+2时区(我想是+3,因为我们现在是夏令时)

你知道我如何使记录的时间与显示的时间相同吗

下面是我按下按钮时执行的方法。谢谢

- (IBAction)addReminder:(id)sender {
    [self.datePicker setTimeZone:[NSTimeZone systemTimeZone]];
    NSLog(@"Setting a reminder for %@", self.datePicker.date);
}

NSDate
是某个时刻的简单表示,它对您的本地时间一无所知。当您记录它(实际上,当
说明
)消息被发送时,它使用GMT来显示自己

UIDatePicker
默认情况下使用您的时区(请参阅)

下面是它的工作原理:

  • 您可以在DatePicker中选择一些时间,但除非您指定时区,否则时间毫无意义
  • DatePicker使用您的本地(GMT+2)时区并为其创建
    NSDate
  • 您可以显示
    NSDate
    ,因为它对时区一无所知,所以它只显示为GMT
要显示日期,应使用
NSDateFormatter
。它具有时区属性:

您还可以使用
NSCalendar
及其组件


您应该阅读本指南:因为日期、格式化程序和日历在Cocoa中不是很清楚,除非您理解它的概念。

NSDate
是某个时刻的简单表示,它对您的本地时间一无所知。当您记录它(实际上,当
说明
)消息被发送时,它使用GMT来显示自己

UIDatePicker
默认情况下使用您的时区(请参阅)

下面是它的工作原理:

  • 您可以在DatePicker中选择一些时间,但除非您指定时区,否则时间毫无意义
  • DatePicker使用您的本地(GMT+2)时区并为其创建
    NSDate
  • 您可以显示
    NSDate
    ,因为它对时区一无所知,所以它只显示为GMT
要显示日期,应使用
NSDateFormatter
。它具有时区属性:

您还可以使用
NSCalendar
及其组件

您应该阅读本指南:因为日期、格式化程序和日历在Cocoa中不是很清楚,除非您理解它的概念。

试试这个

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);
试试这个

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);

与您的时区相反,模拟器时区也可能存在可能重复的问题。检查ios模拟器设置以了解更多信息模拟器上的时间与实时时间相同。我尝试在iOS模拟器上更改区域,结果完全相同。与您的时区相反,模拟器时区可能存在重复的问题。检查ios模拟器设置以了解更多信息模拟器上的时间与实时时间相同。我尝试在iOS模拟器上更改区域,结果完全相同。