NSDateformatter setDateFormat согласно currentLocale
Я с ума схожу, возможно, с глупой проблемой.
У меня 3 строки: год, месяц и день. Мне нужно иметь дату в правильном формате на основе currentLocale, так что если currentLocale localeIdentifier является en_US, то dateFormat должен быть:
МММ/дд/гггг
если fr_FR dateFormat должен быть dd/MMM/yyyy
Я не думаю, что единственный способ сделать это - получить currentLocale localeIdentifier и начать с кучи if if.
Спасибо заранее.
Max
Ответы
Ответ 1
Посмотрите на NSDateComponents, чтобы создать NSDate, а затем используйте NSDateFormatter для его форматирования. NSDateFormatter использует текущий язык для форматирования дат в зависимости от стиля форматирования (например,
NSDateFormatterMediumStyle
).
Ответ 2
Если я понимаю ваш вопрос, вы хотите установить 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];
Ответ 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)
Ответ 4
-(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;
}
Надеюсь, это поможет.
Ответ 5
ознакомьтесь с этой ссылкой, чтобы понять, как NSDateFormatter
на основе http://www.codingexplorer.com/swiftly-getting-human-readable-date-nsdateformatter/
Ответ 6
Если вы хотите иметь большую гибкость в отношении формата, чем форматы, используемые с setDateStyle, посмотрите на мой ответ на аналогичный вопрос:
fooobar.com/info/204748/...