11

我可能会因为一个愚蠢的问题而生气。

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

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

我不认为这样做的唯一方法是获取 currentLocale localeIdentifier 并从一堆 if then 开始。

提前致谢。

最大限度

4

6 回答 6

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];
于 2011-05-09T15:11:35.127 回答
7

查看 NSDateComponents 创建一个 NSDate,然后使用 NSDateFormatter 对其进行格式化。NSDateFormatter 使用当前语言环境来格式化日期,基于格式样式(例如
NSDateFormatterMediumStyle)。

于 2011-05-09T15:09:33.367 回答
4

在斯威夫特 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)
于 2015-07-28T09:25:44.977 回答
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;
}

我希望这有帮助。

于 2011-05-09T15:12:06.387 回答
1

查看此链接以了解如何NSDateFormatter基于http://www.codingexplorer.com/swiftly-getting-human-readable-date-nsdateformatter/

于 2016-09-23T05:00:56.043 回答
0

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

于 2013-11-26T14:38:36.157 回答