3

以下代码适用于 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它是相同的)。

4

2 回答 2

2

你可以用这个

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
    [formatter setLocale:locale];
于 2016-02-18T13:27:44.317 回答
1

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

[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
于 2013-05-27T11:29:07.110 回答