为什么NSDateFormatter不适用于ICT TimeZone

时间:2012-04-30 11:14:33

标签: ios timezone nsdateformatter

在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简称字典]并仍然在那里看到ICT。所以这个时区应该仍然有效。那么,为什么我得到(null)?

1 个答案:

答案 0 :(得分:0)

时区名称是特定于语言环境的,可能表示不同语言的其他内容或根本不存在。

例如

  

ICTÎlesCrozetTime +4
  ICT Indochina Time +7

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

编辑:

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

请注意,该部分称为“时区显示名称”。这些名称从未打算用于解析。它们应该被显示(例如,作为ZZZ模式的结果)。