简单的问题,恼人的问题。 我有一个日期选择器,我选择一个时间(比如上午11点)。然后是一个连接到方法的按钮,该方法将该时间打印到控制台。字面上只是一个五行项目。打印到控制台的时间比我设置的时间提前一小时显示(因此,如果我设置为上午11点,它会打印上午10点,依此类推)。我的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使用datepicker设置的小时提前一小时返回,因此通知永远不会被触发。我究竟做错了什么? TX
答案 0 :(得分:0)
日期选择器始终以UTC格式返回日期。
创建一个dateformatter并获取它将显示预期时间的字符串。
答案 1 :(得分:-1)
请使用它,它会帮助你
NSDateFormatter *formattor=[[NSDateFormatter alloc]init];
formattor.dateFormat=@"yyyy-MM-dd HH:mm:ss";
NSString *date_string=[formattor stringFromDate:self.datePicker.date];
NSLog(@"%@",date_string);