只显示来自ISO 8601时间戳的12小时时间格式

所以我想只显示从我们的服务器在我的iOS应用程序中的标签传递的时间,但我很难找出如何设置正确的NSDateFormatter。 所以例如我从服务器得到这个时间戳,这种格式:2013-02-27T18:15:00-0800,我基本上想要在标签中显示“10:15 AM”,但到目前为止我还没有运气。 我在下面试过

NSDateFormatter *timeFormatter = [[[NSDateFormatter alloc] init] autorelease]; [timeFormatter setDateFormat:@"HH:mm a"]; NSString *newTime = [timeFormatter stringFromDate:timeDate]; NSLog(@"the new time is: %@", newTime); 

但是输出显示我的时间为18:15 PM。

我一直在四处张望,尝试在NSDateFormatter不同的组合,但我似乎无法find正确的,任何帮助将不胜感激,因为我知道这是简单的,我俯瞰,但我无法find它。

HH代表24小时。

hh十二个小时。

相应地改变。

你使用24小时格式的HH设置时间格式,以设置12小时格式使用下面的代码,虽然没必要写很多,如同代码行所说。

 [timeFormatter setDateFormat:@"hh:mm a"]; 

为了避免时区问题,请确保您为格式化程序设置时区

 [timeFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"CET"]]; 

你需要用hh ,而不是hh 。 前者是12小时,后者是24小时。