Ios 将美国时间和日期转换为GMT

Ios 将美国时间和日期转换为GMT,ios,iphone,objective-c,Ios,Iphone,Objective C,我正在尝试将日期/时间从美国转换为格林尼治标准时间。它似乎不起作用。它一直返回空值 int subObjects = ((NSArray *)jsonResult[@"match"]).count; for (int i = 0; i <= subObjects-1; i++) { NSString *date = [NSString stringWithFormat:@"%@ %@",[[[jsonResult valueForKey:@"match"] valueForKe

我正在尝试将日期/时间从美国转换为格林尼治标准时间。它似乎不起作用。它一直返回空值

int subObjects = ((NSArray *)jsonResult[@"match"]).count;
for (int i = 0; i <= subObjects-1; i++) {


    NSString *date = [NSString stringWithFormat:@"%@ %@",[[[jsonResult valueForKey:@"match"] valueForKey:@"playdate"] objectAtIndex:i], [[[jsonResult valueForKey:@"match"] valueForKey:@"time"] objectAtIndex:i]];


    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setTimeZone: [NSTimeZone timeZoneWithName:@"US/Arizona"]];
    [df setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
    [df setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
    NSDate *myDate = [df dateFromString:[NSString stringWithFormat:@"%@", date]];

}
myDate日志

 2014-03-16 16:00:00 +0000
 2014-03-08 16:00:00 +0000
 2014-03-09 16:00:00 +0000
 2014-03-15 17:00:00 +0000
 2014-03-09 18:00:00 +0000
 2014-03-08 18:00:00 +0000
 2014-03-16 18:00:00 +0000
 2014-03-10 07:00:00 +0000
 2014-03-15 07:00:00 +0000
 (null)

24小时时间的日期格式是
HH
,而不是
HH
。以及,如观察到的,例如 ,你应该加上

[df setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];

独立于设备上的区域设置。

打印
日期的值
,以便我们可以查看格式。否,只是因为我没有添加loop@user3258468:您已编辑代码,使其与输出不再匹配。您能显示NSLog语句的实际输出吗?此处不适用区域-checked@Daij-詹:我们拭目以待。这个问题是在我准备答案时编辑的(这样代码就不再与输出匹配)。添加代码后,我似乎得到了一个奇怪的回答。前7个是正确的,但后2个不是,然后有一个返回0。这可以解释吗?你可以看到它在我的question@user3258468:看起来好像您没有将“hh”替换为“hh”。
[df setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];