【问题标题】:NSDate issue with locale区域设置的 NSDate 问题
【发布时间】:2012-06-12 15:16:25
【问题描述】:

我正在开发一个 iPad 应用程序,该应用程序与我构建的用于与数据库通信的私有 PHP API 对话。这个 API 需要传输三个日期,一个开始时间,一个结束时间和当前时间。

我想测试当前时间是否在日期范围之间。所以我把时间(比如16:50:00)转换成NSDates:

NSDateFormatter *former = [[NSDateformatter alloc] init];
[former setDateFormat:@"HH:mm:ss"];
[former setLocale:[NSLocale currentLocale]];

NSDate *fromDate = [former dateFromString:@"10:15:00"];
NSDate *nowDate = [former dateFromString:@"13:25:00"];
NSDate *toDate = [former dateFromString:@"16:30:00"];

当我现在使用 NSLog(@"\n%@\n%@\n%@", fromDate, nowDate, toDate); 记录日期时,我发现语言环境不正确。

似乎 NSDateFormatter 只是忽略了语言环境设置。我还记录了正确的 currentLocales 标识符(在我的例子中是“de_DE”)。语言环境仍然是 +0000。

我该如何解决这个问题?谢谢,朱利安

【问题讨论】:

    标签: objective-c nsdate nsdateformatter nslocale


    【解决方案1】:

    好的,我已经删除了之前的答案,试试下面的

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    NSTimeZone *zone = [NSTimeZone localTimeZone];
    [formatter setTimeZone:zone];
    [formatter setDateFormat:@"HH:mm:ss"];
    
    NSDate *date = [formatter dateFromString:@"10:15:00"];
    
    NSLog(@"Time %@",[formatter stringFromDate:date]);
    

    【讨论】:

    • 嘿,谢谢!不过,date 的时间不对。似乎 NSDate 没有正确的语言环境。因为它仍然是+0000。奇怪的行为,但一个可靠的解决方法。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    相关资源
    最近更新 更多