NSDateFormatter不允许24小时格式

时间:2013-08-30 12:34:36

标签: iphone ios nsdate nsdateformatter

我必须在我的应用中显示日期,我需要以12 - hour format的格式显示,我已使用此代码显示date

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:kDateDisplayFormat];
NSTimeZone *timeZone = [NSTimeZone systemTimeZone];
[dateFormatter setTimeZone:timeZone];
NSString *todaysDate = [NSString stringWithFormat:@"%@",[dateFormatter stringFromDate:[NSDate date]]];
[[self lblPointsDate] setText:todaysDate];

当我将iPhone日期格式更改为24小时时,它以24小时格式显示。我需要转换 24小时格式或12小时格式,或者仅以12小时格式显示。我怎么能这样做?

3 个答案:

答案 0 :(得分:5)

只需切换

kDateDisplayFormat.dateFormat = @"HH:mm a";

kDateDisplayFormat.dateFormat = @"hh:mm a";

答案 1 :(得分:2)

虽然解决方案是使用12小时时间格式hh而不是24小时HH格式,但为什么不让用户系统首选项选择正确的格式:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateStyle = NSDateFormatterMediumStyle;
dateFormatter.timeStyle = NSDateFormatterShortStyle;

self.lblPointsDate.text = [dateFormatter stringFromDate:[NSDate date]]

此外,无需将dateFormatter.timeZone设置为系统时区,默认设置为此。

答案 2 :(得分:0)

尝试以下方法:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:[NSDateFormatter dateFormatFromTemplate:@"hh:mm a" options:0 locale:[NSLocale currentLocale]]];
NSString *theTime = [dateFormatter stringFromDate:[NSDate date]];