我有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也没有帮助。有没有办法添加零?
答案 0 :(得分:4)
请参阅提供相关建议的date formatter guide,建议您设置样式而不是调用setDateFormat
:
NSDateFormatter
使您可以使用“系统偏好设置”中“国际偏好设置”面板中配置的用户设置来轻松设置日期格式。NSDateFormatter
样式常量 -NSDateFormatterNoStyle
,NSDateFormatterShortStyle
,NSDateFormatterMediumStyle
,NSDateFormatterLongStyle
和NSDateFormatterFullStyle
- 指定了确定日期方式的属性集根据用户的偏好显示。
然后给出一个列表,显示以此开头的示例:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
听起来你似乎想要NSDateFormatterShortStyle
。
setDateFormat
是您用于自定义格式的内容。来自同一文件的更多建议:
从广义上讲,有两种情况需要使用自定义格式:
- 对于固定格式字符串,例如Internet日期。
- 对于与任何现有样式都不匹配的用户可见元素