我已经在互联网上搜索了很长时间才得到这个,但我找不到解决方案。我收到了来自网络服务的日期字符串"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
请建议任何解决方案。
提前致谢。 :)
答案 0 :(得分:3)
您正在使用YYYY
,这并不代表您认为的含义。在TR35-31文档中,Y
是“年中周年日历”的符号。
您想要dd MMMM yyyy
作为格式字符串。混合基于周年的字段和常规日/月/年字段是一个奇怪问题的处方。
此外,您可能希望在格式化程序中设置时区 - 如果您只是解析日期,那么您应该考虑使用UTC,并确保所有您的计算和格式/解析使用UTC。
(我怀疑这里的问题是没有设定一周的年份,因此假设为1 ...而2014年的一周开始于12月30日。那么日期是由dd部分设置为22,然后考虑UTC + 05:30的时区偏移量。)