19

我有以下代码:

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

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

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

我究竟做错了什么?

先感谢您。

4

4 回答 4

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); 
于 2010-09-20T09:03:28.033 回答
32

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

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

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

编辑:虽然正如迈克所说,你真的应该使用NSDateFormatter. descriptionWithCalendarFormat:timezone:locale:Apple 在文档中提到的一些问题。

于 2009-04-23T20:33:40.417 回答
10

另请注意,在大多数情况下,NSDateFormatter它的灵活性是首选。

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

于 2009-04-24T14:45:39.870 回答
1

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

于 2009-04-23T20:36:28.337 回答