2

我有将字符串转换为日期的函数。它工作得很好,但是当我尝试转换 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

任何想法??

4

2 回答 2

1
NSCalendar* gregCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[dateFormat setCalendar:gregCalendar]; 
于 2013-01-02T17:52:30.923 回答
0

经过数小时的糟糕结果,我终于找到了一个受@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-03T06:53:33.857 回答