【问题标题】:UIDatepicker returns wrong valueUIDatepicker 返回错误值
【发布时间】:2013-01-15 04:55:45
【问题描述】:

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

我填写标签的操作:

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

我使用的是德语系统,我将 UIDatepicker 设置为德语,但它仍然显示 hoursmins

知道我做错了什么吗?

罗纳德

【问题讨论】:

    标签: objective-c cocoa-touch uidatepicker


    【解决方案1】:

    这是 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 分钟的时区偏移。

    【讨论】:

    • 很好的解释,我明白了,塔尔 :)
    • Vielleicht noch ne Idee, warum hours und min in English erscheint? Ich habe DR und FR Versionen angelegt
    • 您执行了哪些步骤来本地化您的应用程序?
    • 我为 MainStoryboard_iPad.storyboard 创建了语言,并在属性管理器中选择了合适的语言。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    相关资源
    最近更新 更多