如何使NSDateFormatter显示区域设置

我正在使用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];

我会尝试下面的NSDateFormatter API:

+ (NSString *)localizedStringFromDate:(NSDate *)date
              dateStyle:(NSDateFormatterStyle)dateStyle
              timeStyle:(NSDateFormatterStyle)timeStyle;

像这样:

self.creationDate.text = [NSDateFormatter localizedStringFromDate:creationTimeStamp
                                          dateStyle:NSDateFormatterMediumStyle
                                          timeStyle:NSDateFormatterShortStyle];

这应该给你你想要的输出,整理一些代码,并让你不必管理一些虚假的内存。


找到解决方案。 关键是根本不要调用setDateFormat ,并且iPhone中的API会根据setDateStylesetTimeStyle指定的setDateStyle自动选择适当的东西来显示。


采用@ fbrereto设计的独立解决方案:

static NSString *FormatDate(NSDate *date)
{
  return [NSDateFormatter localizedStringFromDate:date
                                        dateStyle:NSDateFormatterMediumStyle
                                        timeStyle:NSDateFormatterNoStyle];
}

现在你可以简单地运行:

NSString *formattedDate = FormatDate([NSDate new]);
链接地址: http://www.djcxy.com/p/35155.html

上一篇: How to make NSDateFormatter display locale

下一篇: How to Convert XML Date format to Cocoa