NSDateFormatter本地日期格式问题

时间:2013-09-04 05:48:59

标签: ios nsstring nsdate nsdateformatter

我有NSDate,我需要将其转换为字符串。

通常我使用此代码:

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"MM/dd/yyyy"];

    NSString *stringFromDate = [formatter stringFromDate:date];
    return stringFromDate;

但我需要根据本地日期格式显示数据。例如,在美国,日期通常从月份开始,但在俄罗斯,日期从日期开始(@"dd/MM/yyyy")。可能在不同国家/地区有不同的分隔符方式:'/', '.' ',' '-'

这样做的最佳方法是什么?

更新(根据Jon Skeet的回答):

如果我指定NSDateFormatterMediumStyle,日期是“4.9.2013”​​,但对我来说它更好“04.09.2013”​​。 NSDateFormatterShortStyle也没有帮助。有没有办法添加零?

1 个答案:

答案 0 :(得分:4)

请参阅提供相关建议的date formatter guide,建议您设置样式而不是调用setDateFormat

  

NSDateFormatter使您可以使用“系统偏好设置”中“国际偏好设置”面板中配置的用户设置来轻松设置日期格式。 NSDateFormatter样式常量 - NSDateFormatterNoStyleNSDateFormatterShortStyleNSDateFormatterMediumStyleNSDateFormatterLongStyleNSDateFormatterFullStyle - 指定了确定日期方式的属性集根据用户的偏好显示。

然后给出一个列表,显示以此开头的示例:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];

听起来你似乎想要NSDateFormatterShortStyle

setDateFormat是您用于自定义格式的内容。来自同一文件的更多建议:

  

从广义上讲,有两种情况需要使用自定义格式:

     
      
  • 对于固定格式字符串,例如Internet日期。
  •   
  • 对于与任何现有样式都不匹配的用户可见元素
  •