MTA*_*MTA 5 iphone objective-c uidatepicker
我在我的应用程序中使用UIDatePicker,当我选择的日期:
NSDate *date = picker.date;
Run Code Online (Sandbox Code Playgroud)
picker.date 在我选择的日期前一天返回.
知道为什么会这样吗?
UIDatePicker将在您当地的时区显示日期和时间.但是,NSDate没有任何时区概念,因为它存储自参考日期以来的绝对秒数.当NSLogging一个日期时,它以GMT显示日期和时间.我希望如果你从GMT计算出你当地的时区差异,你会发现它是正确的日期.
尝试使用适当的语言环境创建NSDateFormatter或NSCalendar,并通过该日期传递日期.
有关此常见主题的进一步阅读,请参阅此站点由另一个SO撰稿人撰写.
试试这个为我工作
NSDate* sourceDate = [NSDate date];
NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone];
NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:sourceDate];
NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:sourceDate];
NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;
NSDate* destinationDate = [[[NSDate alloc] initWithTimeInterval:interval sinceDate:sourceDate] autorelease];
Run Code Online (Sandbox Code Playgroud)
//我在标签上输出我可以使用你喜欢的任何东西
NSString *dateOutput = [[[NSString alloc] initWithFormat:@"%@", destinationDate]autorelease];
self.dateLabel.text = dateOutput;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7731 次 |
| 最近记录: |