0

格式化此字符串的适当方法是什么:

2012-07-28T23:59:00-06:00

这是我正在使用的代码,日期格式化程序当前将 s.due_At 的值设置为 nil,并且两个 NSLog 都显示为 null。我从字典中得到了上面的字符串,确定我已经 NSLogged 了。

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
                [dateFormatter setLocale:[NSLocale currentLocale]];
                [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
                s.due_At = [dateFormatter dateFromString:[assignmentData  objectForKey:@"due_at"]];


                NSLog(@"%@",[dateFormatter stringFromDate:s.due_At]);
                NSLog(@"%@",[dateFormatter dateFromString:[assignmentData objectForKey:@"due_at"]]);

如何解决此问题以输出上述字符串?

4

2 回答 2

1

Z字面意思是 RFC 822 标准,它不允许您:在小时和分钟之间:

 zone        =  "UT"  / "GMT"                ; Universal Time
                                             ; North American : UT
             /  "EST" / "EDT"                ;  Eastern:  - 5/ - 4
             /  "CST" / "CDT"                ;  Central:  - 6/ - 5
             /  "MST" / "MDT"                ;  Mountain: - 7/ - 6
             /  "PST" / "PDT"                ;  Pacific:  - 8/ - 7
             /  1ALPHA                       ; Military: Z = UT;
                                             ;  A:-1; (J not used)
                                             ;  M:-12; N:+1; Y:+12
             / ( ("+" / "-") 4DIGIT )    ; Local differential
                                             ;  hours+min. (HHMM)
于 2012-08-02T20:47:08.483 回答
0

谢谢你的帮助。好的,所以我稍微更改了格式化程序。这是代码。

  NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
            [dateFormatter setDateStyle:NSDateFormatterShortStyle];
            [dateFormatter setLocale:[NSLocale currentLocale]];
            [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HHmmssZ"];


            s.due_At = [dateFormatter dateFromString:[[assignmentData objectForKey:@"due_at"] stringByReplacingOccurrencesOfString:@":" withString:@""]];

            NSLog(@"%@",[dateFormatter stringFromDate:s.due_At]);

Nslog 不再为空,尽管它仍然包含中间的 T。这是现在的日志消息。

2012-07-29T015900-0400

于 2012-08-02T21:48:38.453 回答