我的UIDatepicker返回错误的值,我不明白为什么。见图。
它显示 0小时和 1分钟,但标签显示 -1小时。
我找不到设置的时区。我希望我的应用程序使用机器的时区。
我填写标签的行动:
- (IBAction)datePickerDateChanged:(id)sender {
[_timerOutput setText:[NSString stringWithFormat:@"%@", [_timePicker date]]];
}
我在德国系统上,我将UIDatepicker设置为德语,但仍然显示小时和分钟。
知道我做错了吗?
罗纳德
答案 0 :(得分: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分钟时区偏移。