在ios中从字符串到NSDate的日期转换

时间:2014-10-24 07:17:30

标签: ios objective-c nsdate nsdateformatter

我已经在互联网上搜索了很长时间才得到这个,但我找不到解决方案。我收到了来自网络服务的日期字符串"22 May 2014",我必须转换为NSDate格式,以便用当前日期进行检查。我必须在将来或过去的时间里找出来自网络服务的日期。

实际问题是当我使用

转换它时
NSDate *date;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd MMMM YYYY"];
date = [dateFormatter dateFromString:dateString];

但是我得到一个完全不同的日期,样本输入dateString:22 June 2014而输出我得到的是2013-12-21 18:30:00+0000

请建议任何解决方案。

提前致谢。 :)

1 个答案:

答案 0 :(得分:3)

您正在使用YYYY,这并不代表您认为的含义。在TR35-31文档中,Y是“年中周年日历”的符号。

您想要dd MMMM yyyy作为格式字符串。混合基于周年的字段和常规日/月/年字段是一个奇怪问题的处方。

此外,您可能希望在格式化程序中设置时区 - 如果您只是解析日期,那么您应该考虑使用UTC,并确保所有您的计算和格式/解析使用UTC。

(我怀疑这里的问题是没有设定一周的年份,因此假设为1 ...而2014年的一周开始于12月30日。那么日期是由dd部分设置为22,然后考虑UTC + 05:30的时区偏移量。)