根据currentLocale的NSDateformatter setDateFormat

时间:2011-05-09 15:04:17

标签: cocoa-touch ios nsdateformatter nslocale

我很生气,可能是一个愚蠢的问题。

我有3个字符串:年,月和日。我需要有一个基于currentLocale的正确格式的日期,所以如果currentLocale localeIdentifier是en_US我的dateFormat应该是: MMM / DD / YYYY

如果是fr_FR,则dateFormat应为dd / MMM / yyyy

我不认为这样做的唯一方法是获取currentLocale localeIdentifier并从当时开始使用。

提前致谢。

最高

6 个答案:

答案 0 :(得分:34)

如果我理解您的问题,您希望将NSDateFormatter设置为用户设备的区域设置。为此你可以做这样的事情:

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setLocale:[NSLocale currentLocale]];
NSDate *date = [NSDate date];
NSString *dateString = [dateFormatter stringFromDate:date];

答案 1 :(得分:7)

查看NSDateComponents以创建NSDate,然后使用NSDateFormatter对其进行格式化。 NSDateFormatter根据格式样式使用当前区域设置来格式化日期(例如, NSDateFormatterMediumStyle)。

答案 2 :(得分:3)

在Swift 3中:

let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.timeStyle = .none
formatter.locale = Locale.current
let date = Date()
let dateString = formatter.string(from: date)
print(dateString)

答案 3 :(得分:2)

-(NSString *) stringFromDate:(NSDate *) date{

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

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

    [dateFormatter setLocale:[NSLocale currentLocale]];

    NSString *dateString = [dateFormatter stringFromDate:date];

    [dateFormatter release];

    return dateString;
}

-(NSDate *) dateFromString:(NSString *) dateInString{

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

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

    [dateFormatter setLocale:[NSLocale currentLocale]];

    NSDate *dateFromString = [dateFormatter dateFromString:dateInString];

    [dateFormatter release];

    return dateFromString;
}

我希望这会有所帮助。

答案 4 :(得分:1)

查看此链接,了解js, _ := json.Marshal(ret)基于http://www.codingexplorer.com/swiftly-getting-human-readable-date-nsdateformatter/

的方式

答案 5 :(得分:0)

如果您希望格式比setDateStyle可用的格式更灵活,请查看我对类似问题的回答: https://stackoverflow.com/a/20219610/1896336