NSDateFormatter解析日期不正确

时间:2010-08-16 09:32:21

标签: cocoa cocoa-touch nsdate nsdateformatter

我从表示日期的文本中提取字符串。它们看起来像这样:

Monday August 16, 2010 05:28 AM EST

我正在尝试使用NSDateFormatter解析它们。我将其格式设置为:

[dateFormatter setDateFormat:@"EEEE MMMM d, YYYY h:mm a z"];

然而,这不起作用。对于上面给出的示例,如果我将字符串转换为日期,然后将该日期转换为字符串,则日期格式化程序将返回:

Monday December 28, 2009 5:28 AM EST

我做错了什么?

编辑:使用格式[dateFormatter setDateFormat:@"EEEE MMMM d, y h:mm a z"];似乎有效。奇怪...

2 个答案:

答案 0 :(得分:2)

威尔

NSDateFormatter使用Unicode标准格式化日期。正如你所发现的,“y”有效,但“YYYY”却没有。如果您看到规范(在Apple文档深处引用了几个层,那么不容易找到),您会看到“Y”有这样的说明:“年份(”年份“),用于ISO年 - 周日历。可能与日历年不同。“

Here is the link to the specification.

我知道你自己已经修好了,但这可能有助于解释为什么“Y”不适合你。

答案 1 :(得分:0)

“y”或“yyyy”没问题。 “YYYY”不起作用。 请查看以下链接以获取详细信息。

situee.blogspot.com: NSDateFormatter setDateFormat YYYY return wrong year