0

在 iOS 5(模拟器和设备)上,当我尝试使用时区 ICT 解析日期字符串时,它只返回(null)。一件奇怪的事情是,这个时区在 iOS4.3 中可以正常工作。

NSString *inputDateStr = @"Fri, 06 Apr 2012 13:00:00 ICT";
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss zzz"];
NSDate *inputDate = [df dateFromString:inputDateStr];
NSLog(@"--- INPUT %@ -> %@ ---",inputDateStr, inputDate);

--- INPUT Fri, 06 Apr 2012 13:00:00 ICT -> (null) ---

但是当我尝试其他时区时,比如 PST,它可以工作!?

NSString *inputDateStr = @"Fri, 06 Apr 2012 13:00:00 PST";

--- INPUT Fri, 06 Apr 2012 13:00:00 PST -> 2012-04-06 21:00:00 +0000 ---

我打印出 [NSTimeZone abbreviationDictionary] 并且仍然在那里看到 ICT。所以这个时区应该仍然有效。那么,为什么我会得到(null)?

4

1 回答 1

0

时区名称是特定于语言环境的,并且可能在不同的语言中表示其他含义,或者根本不存在。

例如。

ICT Îles Crozet 时间 +4
ICT 印度支那时间 +7

使用 GMT+XX 以获得稳定的功能。

编辑:

有关时区的更多信息,请参阅此链接:http: //unicode.org/repos/cldr/trunk/docs/web/tr35.html#Time_Zone_Fallback

Note the section is called "Time Zone Display Names". These names were never intented to be used for parsing. They are meant to be displayed (e.g. as the result of the ZZZ pattern).

于 2012-04-30T11:35:59.803 回答