UIDatepicker返回错误的值

时间:2013-01-15 04:55:45

标签: objective-c cocoa-touch uidatepicker

我的UIDatepicker返回错误的值,我不明白为什么。见图。
它显示 0小时 1分钟,但标签显示 -1小时
我找不到设置的时区。我希望我的应用程序使用机器的时区。

我填写标签的行动:

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

我在德国系统上,我将UIDatepicker设置为德语,但仍然显示小时分钟

知道我做错了吗?

罗纳德

enter image description here

1 个答案:

答案 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分钟时区偏移。