AM / PM不是来自NSDateFormatter

时间:2016-01-21 15:02:04

标签: ios objective-c nsdateformatter

时间格式“yyyy-MM-dd hh:mm a”通常会给出日期字符串,如2016-01-22 13:01 PM

但是当设备上的24小时开启并使用以下代码(即使用不同的时区)时,我没有获得AM / PM部分。 以下代码的结果是2016-01-22 13:01

NSDateFormatter* estDf = [[NSDateFormatter alloc] init];
[estDf setTimeZone:[NSTimeZone timeZoneWithName:@"EST"]];
estDf setDateFormat:@"yyyy-MM-dd hh:mm a"];
NSString *timeStr = [estDf stringFromDate:[NSDate date]];

但即使24小时在设备上打开并使用以下代码(即使用设备时区),我也可以获得AM / PM部分。 以下代码的结果是2016-01-22 13:01 PM

NSDateFormatter *dateformat = [[NSDateFormatter alloc] init];
[dateformat setDateFormat:@"yyyy-MM-dd hh:mm a"];
NSString * timeStr = [dateformat stringFromDate:[NSDate date]];

我的问题是我在这个问题的第一个代码片段中要做的是在日期字符串中获取AM / PM部分

2 个答案:

答案 0 :(得分:1)

手机的设置无关紧要。要以AM / PM格式获得时间,您需要使用hh:mm,以24小时格式获得时间,您需要使用HH:mm格式。

简单地使用大写H告诉格式在24h和12h格式之间切换。

格式字符串中的a也会显示AM / PM。

答案 1 :(得分:0)

即使显示24小时时间,使用“ aa”代替“ a”也会强制AM / PM。