仅显示ISO 8601时间戳中的12小时时间格式

时间:2013-02-27 19:51:18

标签: ios

所以我想在我的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。

我一直在环顾四周,尝试在NSDateFormatter中使用不同的组合,但我似乎无法找到合适的组合,任何帮助都会受到赞赏,因为我知道这很简单,我忽略了但是我可以找不到它。

3 个答案:

答案 0 :(得分:6)

HH代表24小时。

hh坐了12个小时。

相应地改变。

答案 1 :(得分:1)

您正在使用24小时格式的HH设置时间格式,为了设置12小时格式,请使用以下代码,尽管没有写太多,如代码行所示。

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

为了避免出现时区问题,请确保同时设置格式化程序的时区

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

答案 2 :(得分:0)

您需要使用hh,而不是HH。前者为12小时,后者为24小时。