0

我有 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 对此也无济于事。有没有办法加零?

4

1 回答 1

4

请参阅提供有关此建议的日期格式化程序指南,建议您设置样式而不是调用setDateFormat

NSDateFormatter使您可以轻松地使用用户在系统偏好设置的国际偏好设置面板中配置的设置来格式化日期。样式常量—— NSDateFormatter<code>NSDateFormatterNoStyle、NSDateFormatterShortStyleNSDateFormatterMediumStyleNSDateFormatterLongStyle和——NSDateFormatterFullStyle指定了一组属性,这些属性根据用户的偏好确定日期的显示方式。

然后它给出了一个清单,显示了一个以此开头的示例:

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

不过,这听起来像是你想要NSDateFormatterShortStyle的。

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

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

  • 对于固定格式的字符串,例如 Internet 日期。
  • 对于与任何现有样式都不匹配的用户可见元素
于 2013-09-04T05:53:08.207 回答