在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)?
答案 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模式的结果)。