【问题标题】:NSDate's date method returning wrong time [duplicate]NSDate的日期方法返回错误的时间[重复]
【发布时间】:2016-07-16 11:36:24
【问题描述】:

简单的问题,烦人的问题。 我有一个日期选择器,我可以用它选择一个时间(比如上午 11 点)。然后是一个连接到将时间打印到控制台的方法的按钮。从字面上看,只是一个五行项目。打印到控制台的时间显示比我设置的时间早一个小时(因此,如果我设置 11 AM,它会打印 10 AM 等等)。我的 Mac 上的时区设置正确,时钟显示正确的时间。我查看了 Stack Overflow 并看到了一些涉及 NSCalendar 和组件等的很长的答案……但我很确定这应该是单行的。在我继续点燃我的 mac 之前,请帮忙。谢谢

----------------------------------- - - - - - - - - 编辑 - - - - - - - - - - - - - - - - - -----------------------------

好的,我会发布一些代码,看看它是否更清楚:

- (IBAction)setReminder:(id)sender{

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    NSString *dateString = [formatter stringFromDate:self.datePicker.date];


    NSLog(@"Setting a reminder for: %@", dateString);

    NSDate *date = [formatter dateFromString:dateString];

    NSLog(@"another proof that date is right: %@", date);

    UILocalNotification *note = [[UILocalNotification alloc]init];
    note.alertBody = @"This is a reminder!";
    note.fireDate = date;

    [[UIApplication sharedApplication] scheduleLocalNotification:note];}

第一个 NSLog 返回正确的时间,但第二个 NSLog 返回的时间比使用日期选择器设置的小时早一个小时,因此永远不会触发通知。我究竟做错了什么?交易

【问题讨论】:

  • 请向我们展示您尝试过的代码。
  • 是的,发布您尝试过的代码!!
  • 我已经用一些代码编辑了文本。

标签: ios objective-c datepicker timezone nsdate


【解决方案1】:

日期选择器始终以 UTC 格式返回日期。

创建一个日期格式化程序并获取字符串,它将显示预期时间。

【讨论】:

    【解决方案2】:

    请使用它,它将帮助您解决问题

    NSDateFormatter *formattor=[[NSDateFormatter alloc]init];
    formattor.dateFormat=@"yyyy-MM-dd HH:mm:ss";
    NSString *date_string=[formattor stringFromDate:self.datePicker.date];
    NSLog(@"%@",date_string);
    

    【讨论】:

    • 这是一个好的开始,我已经尝试过了,但日期本身还是提前了一个小时。 Pz 看看编辑。
    猜你喜欢
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多