使用12小时时间格式时,NSDateFormatter stringFromDate返回nil

时间:2012-07-10 13:23:29

标签: objective-c ios ios5 nsdateformatter

以下代码适用于24小时时间格式。

+ (NSString *)formatDate:(NSDate *)date useLongStyle:(BOOL)useLongStyle showDate:(BOOL)showDate showTime:(BOOL)showTime
{
    NSDateFormatter *dateFormatter = [NSDateFormatter new];

    dateFormatter.dateStyle = (useLongStyle) ? NSDateFormatterLongStyle : NSDateFormatterShortStyle;
    dateFormatter.dateStyle = (showDate) ? dateFormatter.dateStyle : NSDateFormatterNoStyle;
    dateFormatter.timeStyle = (showTime) ? NSDateFormatterShortStyle : NSDateFormatterNoStyle;

    return [dateFormatter stringFromDate:date];
}

但是当手机设置中有12小时格式时,它会返回nil。直到我明确地将区域设置为例如澳大利亚。

date的时间为24小时格式。当前区域设置为ru_RU(但en_EN中的区域设置相同)。

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题并找到了两个解决方案。一种是手动设置区域设置(我选择en_GB为24小时格式),另一种是设置时区。两者都为我个人工作。如果您不打算处理需要根据时区更改的日期,我建议您去设置区域设置,因为在处理时区时,源和目标时区会发挥作用,除非绝对必要,否则您无需处理所有这些。所以尝试设置区域设置,否则请选择时区。不知何故,它帮助覆盖了系统设置。

[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];

答案 1 :(得分:1)

您可以使用此

nlme