NSDateFormatter区域设置

时间:2013-09-23 16:54:17

标签: iphone ios objective-c nsdateformatter

如何为NSDateFormatter设置区域设置?我已经尝试了以下代码,但它无法正常工作。

- (NSString *)localizedStringWithFormat:(NSString *)format {

    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setDateFormat:format];
    NSCalendar *cal = [NSCalendar currentCalendar];
    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier: @"fr_FR"];
    cal.locale = locale;
    df.calendar = cal;
    return [df stringFromDate:self];
}

请让我知道如何使这项工作。

感谢。

4 个答案:

答案 0 :(得分:11)

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSLocale *locale = [[NSLocale alloc] 
                     initWithLocaleIdentifier:@"he"];
[dateFormatter setLocale:locale];

答案 1 :(得分:2)

派对有点晚了,但这就是我今天在Swift做的事情:

let df = NSDateFormatter()
df.locale = NSLocale.currentLocale()
df.timeStyle = .MediumStyle
df.dateStyle = .MediumStyle
println("Date: \(df.stringFromDate(obj.dateSent!))")

根据您的操作系统区域设置,输出应如下所示(我在德国):

Date: 27.11.2014 12:30:39

注意:只是想到了很多人在这个问题上遇到了很多问题,所以我想回答它会有什么不妥。

答案 2 :(得分:1)

添加这个,因为我花了一些时间试图不在我的日期格式化程序中使用本地化的区域设置。

来自apple docs: 如果您不想要任何本地化,请使用系统区域设置。使用当前区域设置来格式化显示给用户的文本。

代码:[formatter setLocale:[NSLocale systemLocale]];

答案 3 :(得分:1)

如果有人会寻找 Swift 3 解决方案:

let dateFormatter = DateFormatter()
let frLocale = Locale(identifier: "fr")
dateFormatter.locale = frLocale