首页 文章

如何使NSDateFormatter显示特定于语言环境的日期?

提问于
浏览
13

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

3 回答

  • 12

    我会尝试以下 NSDateFormatter API:

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

    像这样:

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

    这应该会给你你正在寻找的输出,稍微整理一下代码,让你不必管理一些虚假的内存 .

  • 32

    找到了解决方案 . 关键是根本不要调用 setDateFormat ,iPhone中的API会根据 setDateStylesetTimeStyle 中指定的内容自动选择要显示的内容 .

  • 0

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

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

    现在你可以简单地运行:

    NSString *formattedDate = FormatDate([NSDate new]);
    

相关问题