0

時間を表示しています。:TIME:2012-06-18 23:00:00 +0000と表示されますが、NSDateFormatterを使用した後、なぜ00:00:00AMが表示されるのかわかりません。

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];

[dateFormatter setDateFormat:@"HH:mm:ss a"];

NSLog(@"TIME :%@",self.startDate);

NSDate *date = [NSDate date];
NSString * _startTime = [dateFormatter stringFromDate:date];
NSLog(@"current time : %@",_startTime);
NSString * _startTime1 = [dateFormatter stringFromDate:self.startDate];
NSLog(@"Start time : %@",_startTime1);
[dateFormatter release];

**Result is**

TIME :2012-06-18 23:00:00 +0000
current time : 17:05:41 PM
Start time : 00:00:00 AM
4

1 に答える 1

0

最初NSLogに日付をGMT時間で出力します(末尾の+0000に注意してください)。オブジェクトは、指定されたNSDateFormatterタイムゾーンに日付をフォーマットします。ステートメントNSLogは、に保存された日付がself.startDate少なくとも1つのタイムゾーンで正確に00:00:00 AMであり、フォーマッターがそのタイムゾーンに設定されていることを示しています。フォーマッタはデフォルトでデバイスのタイムゾーンになります。フォーマッターのタイムゾーンをGMTから0秒に設定して、最後のNSLogステートメントから23:00:00PMを確認できます。

[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
于 2012-06-18T17:36:26.457 に答える