Ответ 1
Нашел решение. Ключом является вовсе не вызывать setDateFormat
, и API в iPhone автоматически выбирает подходящую вещь для отображения на основе того, что указано в setDateStyle
и setTimeStyle
.
Я использую NSDateFormatter, чтобы установить дату в приложении для iPhone, и даты отображаются правильно. Тем не менее, я нахожу все локали (мое приложение поддерживает до 12 разных языков) придерживаются формата даты, который я указываю через setDateFormat. В идеале я хочу, чтобы формат даты отображался в форме, естественной для региона, для пользователя, вместо того, чтобы следовать моему формату (который хорошо работает для английского языка, но не может быть естественным для других локалей).
Ниже приведен мой код:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; [dateFormatter setTimeStyle:NSDateFormatterShortStyle]; [dateFormatter setDateFormat:@"MMMM dd, yyyy kk:mm:ss"]; self.creationDate.text = [dateFormatter stringFromDate:creationTimeStamp];
Нашел решение. Ключом является вовсе не вызывать setDateFormat
, и API в iPhone автоматически выбирает подходящую вещь для отображения на основе того, что указано в setDateStyle
и setTimeStyle
.
Вместо этого я попробую использовать следующий NSDateFormatter
API:
+ (NSString *)localizedStringFromDate:(NSDate *)date
dateStyle:(NSDateFormatterStyle)dateStyle
timeStyle:(NSDateFormatterStyle)timeStyle;
Так же:
self.creationDate.text = [NSDateFormatter localizedStringFromDate:creationTimeStamp
dateStyle:NSDateFormatterMediumStyle
timeStyle:NSDateFormatterShortStyle];
Это должно дать вам результат, который вы ищете, немного приукрасить код и не дать вам управлять некоторой ложной памятью.
Автономное решение с дизайном @fbrereto:
static NSString *FormatDate(NSDate *date)
{
return [NSDateFormatter localizedStringFromDate:date
dateStyle:NSDateFormatterMediumStyle
timeStyle:NSDateFormatterNoStyle];
}
Теперь вы можете просто запустить:
NSString *formattedDate = FormatDate([NSDate new]);