我很生气,可能是一个愚蠢的问题。
我有3个字符串:年,月和日。我需要有一个基于currentLocale的正确格式的日期,所以如果currentLocale localeIdentifier是en_US我的dateFormat应该是: MMM / DD / YYYY
如果是fr_FR,则dateFormat应为dd / MMM / yyyy
我不认为这样做的唯一方法是获取currentLocale localeIdentifier并从当时开始使用。
提前致谢。
最高
答案 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