1

我的 UIDatepicker 返回一个错误的值,我不明白为什么。见图片。
它显示0 hours1 min但标签显示-1 hour
我找不到要设置的时区。我希望我的应用程序使用它所在机器的时区。

我填写标签的操作:

- (IBAction)datePickerDateChanged:(id)sender {
   [_timerOutput setText:[NSString stringWithFormat:@"%@", [_timePicker date]]];
}

我在德语系统上,我将 UIDatepicker 设置为 German 但它仍然显示hoursmins

知道我在做什么错吗?

罗纳德

在此处输入图像描述

4

1 回答 1

2

这是 GMT 冬季时间 (== UTC) 中的日期和时间。使用 NSDateFormatter 来调整它,它应该默认使用默认时区。你也可以设置另一个。

尝试

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
NSString *myDateString = [dateFormatter stringFromDate: [_timePicker date]];
NSLog(@"%@", myDateString);

一些理论:

NSDate 对象并不代表我们在日常意义上所说的日期,例如一天或范围内的时间,或者其他任何东西。它代表一个时间点。具有亚毫秒精度。它通过计算时间间隔来做到这一点。从某个时代开始。根据定义,它将UTC时区作为参考。
内部计数器将始终在 UTC 上下文中计数,正确显示它是您的责任。但是 NSDateFormatter 对此有很大帮助。
顺便说一句:您显示的时间是 UTC 时间格式的时间也显示为+0000,因为它与 UTC 有 00 小时和 00 分钟的时区偏移。

于 2013-01-15T05:01:20.733 回答