NSDateFormatter尊重用户设置 - 没有分钟

时间:2015-07-13 18:41:59

标签: ios objective-c nsdateformatter

根据用户的偏好,我试图将给定的小时变为上午/下午或24小时显示。

我目前有:

+ (NSString *)formatWithTemplate:(NSString *)template {
    return [NSDateFormatter dateFormatFromTemplate:template options:0 locale:[NSLocale currentLocale]];
}

+ (NSString *)format:(NSDate *)date {
    [formatter setDateFormat:[MyFormatter formatWithTemplate:@"h a"]];
    [dateFormatter setDateStyle:NSDateFormatterShortStyle];
    [dateFormatter setTimeStyle:NSDateFormatterNoStyle];
    return [formatter stringFromDate:date];
}

使用示例:

如果使用24小时时钟,

[MyFormatter format:24]将显示“24:00”,如果使用12小时时钟(在用户的设备设置中),则显示“12:00 PM”。

但是,对于12小时时钟,它会一直显示:“12:00 PM”。有没有办法摆脱:00,同时尊重区域设置和用户的设置,以便显示:“12 PM”而不是“12:00 PM”?

当我使用时:

[dateFormatter setDateStyle:NSDateFormatterShortStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];

它尊重用户的设置,但完全忽略了我的格式。但是,如果我使用我的格式,它会忽略用户的设置。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我会以用户设置为准。那么你已经有了一个从中获取字符串的方法。然后根据需要修改字符串。

由于您确信您只需要查找并替换字符串&#39:00'那就做那个。这是非常简单的事情:

NSString *string = @"12:00 PM"; //get this from the `dateFormatter` `format:date` method you have
NSString *newString = [string stringByReplacingOccurrencesOfString:@":00" withString:@""];
NSLog(@"newString %@",newString);