我有一个将字符串转换为日期的函数。它工作得很好,但是当我尝试转换20130331时,应用程序崩溃了。下面是我的代码
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyyMMdd"];
NSDate *date = [dateFormat dateFromString:dateStr];
NSLog(@"before %@ dateStr %@",date,dateStr);
日志如下
2013-01-02 17:56:04.402 jana2ez[6067:11303] before 2013-03-28 22:00:00 +0000 dateStr 20130329
2013-01-02 17:56:04.498 jana2ez[6067:11303] before 2013-03-29 22:00:00 +0000 dateStr 20130330
2013-01-02 17:56:04.626 jana2ez[6067:11303] before (null) dateStr 20130331
有什么想法吗?
发布于 2013-01-03 06:53:34
在几个小时的糟糕结果之后,我终于从@Echihl的评论中找到了一个解决方案。
我更改了日期中的时间,因此日期将被解析为在dateStr
中找到的相同日期。
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyyMMdd HHmm"];
NSDate *date = [dateFormat dateFromString:dateStr];
NSLog(@"before %@ dateStr %@",date,dateStr);
我的输出结果为
before 2013-03-31 05:00:00 +0000 dateStr 20130331 0800
之前的20130329被解析到2013年3月28日晚上10点
发布于 2013-01-02 17:52:31
NSCalendar* gregCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[dateFormat setCalendar:gregCalendar];
https://stackoverflow.com/questions/14125054
复制