私のサーバー ログによると、iOS が次のような奇妙な日付を送信することがあります。
2013-08-029T05:15:11.578-0500
(当日は029)
2013-09-05T06:43:030.479-0400
(秒は030)
これは私のフォーマッタです:
if (sISO8601Formatter == nil)
{
// See https://developer.apple.com/library/ios/#qa/qa1480/_index.html
sISO8601Formatter = [[NSDateFormatter alloc] init];
NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
if (enUSPOSIXLocale)
[sISO8601Formatter setLocale:enUSPOSIXLocale];
sISO8601Formatter.dateFormat = @"yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSSZZZ";
}
そして、私は日付を次のようにフォーマットします:
+ (NSString *)formatDateWithISO8601:(NSDate *)date forTimeZone:(NSTimeZone *)timeZone
{
[sISO8601Formatter setTimeZone:timeZone];
return [sISO8601Formatter stringFromDate:date];
}
これは iOS の既知のバグですか、それともフォーマッタが間違っていますか? スレッドの問題である可能性はありますか?