2

我正在尝试解析由 NSDateFormatter 使用另一个具有相同格式的 NSDateFormatter 生成的字符串。

与其试图使前面的句子有意义,不如使用以下代码:

NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"MMM dd, YYYY HH:mm"];

NSDate *now = [[NSDate alloc] init];

NSString *dateString = [format stringFromDate:now];

NSDateFormatter *inFormat = [[NSDateFormatter alloc] init];
[inFormat setDateFormat:@"MMM dd, YYYY HH:mm"];

NSDate *parsed = [inFormat dateFromString:dateString];

NSLog(@"\n"
      "now:        |%@| \n"
      "dateString: |%@| \n"
      "parsed:     |%@|", now, dateString, parsed);

当我运行此代码时,我希望parsed包含与现在相同的日期,但我得到以下输出:

现在:|2009-05-04 18:23:35 -0400|
日期字符串:|2009 年 5 月 4 日 18:23|
解析:|2008-12-21 18:23:00 -0500|

有人知道为什么会这样吗?

4

1 回答 1

9

您的问题是“YYYY”不是有效的 ICU 日期格式选项。你想要“yyyy”。

大写的“Y”仅在与“一年中的周”选项一起使用时有效(即“Y 的‘周’w’)。

于 2009-05-04T23:22:50.107 回答