NSDate的字符串描述

时间:2009-04-23 20:30:01

标签: objective-c cocoa nsdate

我有以下代码:

[ [NSDate date] descriptionWithLocale: @"yyyy-MM-dd" ]

我希望它以下列格式返回日期:“2009-04-23”

但它返回:2009年4月23日星期四下午11:27:03 GMT + 03:00

我做错了什么?

提前谢谢。

4 个答案:

答案 0 :(得分:91)

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];
[dateFormatter release];  // delete this line if your project uses ARC
NSLog(@"%@",dateString); 

答案 1 :(得分:32)

您使用的是错误的方法。而是尝试descriptionWithCalendarFormat:timeZone:locale:

[[NSDate date] descriptionWithCalendarFormat:@"%Y-%m-%d"
                                    timezone:nil
                                      locale:nil];

另请注意,该方法的格式与您问题中的格式不同。可以找到完整的文档here

编辑:虽然迈克指出,你真的应该使用NSDateFormatter。 Apple在文档中提及descriptionWithCalendarFormat:timezone:locale:存在一些问题。

答案 2 :(得分:10)

另请注意,对于大多数情况,NSDateFormatter因其灵活性而受到青睐。

在许多应用程序中重复使用日期格式化程序也可以带来显着的性能优势。

答案 3 :(得分:1)

如果您没有NSDate -descriptionWithCalendarFormat:timeZone:locale:可用(我不相信iPhone / Cocoa Touch包含此内容),您可能需要使用strftime并使用一些C风格的字符串。您可以使用NSDate -timeIntervalSince1970从NSDate获取UNIX时间戳。