2012-02-13 30 views
5

Tôi có khối mã này để đọc trong đặc tả ngày/giờ theo tiêu chuẩn ISO 8601. Vấn đề là vì lý do nào đó, tháng này không hoạt động. Mỗi lần tôi chuyển đổi nó là "01". Tôi đang làm gì sai?NSDateFormatter có vẻ sai tháng

NSDateFormatter *UTCDateFormat = [[NSDateFormatter alloc] init]; 
[UTCDateFormat setDateFormat:@"yyyy-MM-DD'T'HH:mm:ss'Z'"]; 
[UTCDateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; 
[UTCDateFormat setCalendar:[[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]]; 
[UTCDateFormat setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]]; 
NSLog(@"%@", [UTCDateFormat dateFromString:dateString]); 

Vì vậy, ví dụ, nếu dateString là:

@"2002-03-12T21:13:27Z" 

đầu ra của tôi sẽ là:

2002-01-12 21:13:27 +0000 

Những điều tôi đã cố gắng:

  • Changed MM để LL
  • Đã thử mà không cần setCalendar/setLocale
  • đã thử với 'xung quanh -
  • chuyển vị trí của MM xung quanh các địa điểm khác. Nó không bao giờ thay đổi bất cứ điều gì.
  • Nhìn toàn bộ SO và dường như hoạt động với mọi người khác.
+2

Điều này có thể không thay đổi bất kỳ điều gì, nhưng tôi nghĩ định dạng định dạng 'DD' phải là' dd'. – dasblinkenlight

Trả lời

15

Hãy thử điều này

[UTCDateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"]; 

DD là "Ngày của năm" không phải là "ngày của một tháng". Nguồn tuyệt vời để tìm kiếm định dạng NSDateFormatter là this table

+1

wow ... Vậy tại sao thế giới lại là MM ngăn chặn DD hoạt động? Có vẻ như chuyện đó không xảy ra. Nhưng cảm ơn rất nhiều! –

+0

'bảng này' thật tuyệt vời! Đó phải là tài liệu của Apple. – Lewis42

+0

Người đàn ông tuyệt vời. Cảm ơn bạn rất nhiều ! –

Các vấn đề liên quan