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 に答える