我正在使用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];
答案 0 :(得分:32)
我会尝试使用以下NSDateFormatter
API:
+ (NSString *)localizedStringFromDate:(NSDate *)date
dateStyle:(NSDateFormatterStyle)dateStyle
timeStyle:(NSDateFormatterStyle)timeStyle;
像这样:
self.creationDate.text = [NSDateFormatter localizedStringFromDate:creationTimeStamp
dateStyle:NSDateFormatterMediumStyle
timeStyle:NSDateFormatterShortStyle];
这应该可以为您提供所需的输出,稍微整理一下代码,让您不必管理一些虚假的内存。
答案 1 :(得分:12)
找到解决方案。关键是根本不打电话给setDateFormat
,iPhone中的API会根据setDateStyle
和setTimeStyle
中指定的内容自动选择要显示的内容。
答案 2 :(得分:0)
@ fbrereto设计的独立解决方案:
static NSString *FormatDate(NSDate *date)
{
return [NSDateFormatter localizedStringFromDate:date
dateStyle:NSDateFormatterMediumStyle
timeStyle:NSDateFormatterNoStyle];
}
现在你可以简单地运行:
NSString *formattedDate = FormatDate([NSDate new]);