如何格式化NSDate?

cgo*_*ain 4 iphone iphone-sdk-3.0 ios4

如何让我的NSDate以格式显示,例如"2011年2月26日星期二"

Mat*_*uch 33

做对了.不要硬编码您的日期格式.有些国家/地区不是您所在的国家/地区,可能会有不同的日期格式.因此,如果要向用户显示此日期,则应使用将用户区域设置考虑在内的方法.

您可以使用dateFormatFromTemplate:options:locale:iOS4中引入的方法获取具有所需信息的相应格式.
如果您必须支持iOS <4,则应使用此模板方法创建一个plist,以便为用户区域设置创建正确的日期格式.

NSLocale *locale = [NSLocale currentLocale];
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease]; 
NSString *dateFormat = [NSDateFormatter dateFormatFromTemplate:@"E MMM d yyyy" options:0 locale:locale];
[formatter setDateFormat:dateFormat];
[formatter setLocale:locale];
NSLog(@"Formatted date: %@", [formatter stringFromDate:myDate]);
Run Code Online (Sandbox Code Playgroud)

给出So., 27. Feb 2011了我的语言环境.
以及Sun, Feb 27, 2011en_US语言环境

  • 听起来有人对总是看到美国格式的日期感到不安;) (4认同)