Ios6 iOS 6在尝试使用NSDateFormat时是否支持时区PHT?

Ios6 iOS 6在尝试使用NSDateFormat时是否支持时区PHT?,ios6,timezone,ios5.1,Ios6,Timezone,Ios5.1,我的代码有问题,不确定是什么问题 NSString* dateFormat1 = @"EEE MMM dd HH:mm:ss V yyyy"; NSString* dateString1 = @"Fri Jul 26 00:00:00 PHT 2013"; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; [dateFormatter setDateFormat:dateFormat1]; 我的iOS5.1结果: 2

我的代码有问题,不确定是什么问题

NSString* dateFormat1 = @"EEE MMM dd HH:mm:ss V yyyy";
NSString* dateString1 = @"Fri Jul 26 00:00:00 PHT 2013";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:dateFormat1];
我的iOS5.1结果:

2013-08-02 11:59:08.459 MySandbox[41502:c07] 2013-07-25 16:00:00 +0000
适用于iOS 6.0

2013-08-02 12:02:37.454 MySandbox[41581:c07] (null)
*注意,我使用V而不是zzz或Z,因为它仍然是null。 *注2:我尝试将PHT更改为PST,结果成功了。把它改成JST,没用

我猜我没有使用正确的格式。我不确定该用哪一种

*注3,根据这一点,iOS5和iOS6确实发生了变化,所以我想这就是iOS5工作的原因。

根据,
NSDateFormatter
使用Unicode日期格式模式,这是“Unicode技术标准”35的一部分。这一标准正在发展,iOS 5使用,而iOS 6使用

您可以在“附录J:时区显示名称”(或)中了解时区支持的值

我不太清楚为什么以前支持
PHT
,而现在不支持。但总的来说,我能给出的最好建议是避免使用时区缩写。虽然
PHT
是唯一的,但还有许多其他缩写词模棱两可

相反,您应该尽可能使用IANA时区名称。(tr-35标准称之为“黄金地带”)。在您的情况下,它将是
Asia/Manila
。我不是一个Objective C开发人员,所以我不确定您将如何在输入字符串中使用它。您可以尝试
vvv
格式说明符,但我不确定它是否直接接受IANA名称

您可能需要检查
[NSTimeZone abbreviationDictionary]
的结果,如图所示。在那篇文章中,它确实显示了
PHT=“Asia/Manila”
,但我认为在发布日期之前,这些都是由iOS 5生成的