0

「4:15:00PM」をNSDateに変換するにはどうすればよいですか?以下は私が持っているコードです:

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"HH:mm:ss aa"];
NSDate *date =  [df dateFromString:@"4:15:00 PM"];

NSLog(@"date: %@",date);//outputs: 1970-01-01 17:15:00 +0000
//should output: 1970-01-01 16:15:00 +0000

更新:応答に基づいて更新しましたが、まだ間違った表示があります:

NSLog(@"date: %@",[df stringFromDate:date]);//outputs: 12:15:00 PM
//should output: 4:15:00 PM

問題は、なぜ時間が午後4時15分から午後12時15分に変わるのかということです。

4

2 に答える 2

5

実際、これは正しいです。

ただし、デバッガーは GMT で時刻をNSLog 表示します。

ローカル タイムを表示する場合は、 と を使用しNSDateFormatterますstringFromDate

更新:
日付フォーマッタ形式も正しく設定されていません。

[df setDateFormat:@"hh:mm:ss aa"];12 時間時計を使用しているためです。

于 2012-05-30T16:44:51.053 に答える
2

これはロケールによるものです。

NSDateFormatterNSDate を出力します。これは常に GMT 時間です。

最初の文字列を GMT 時間として解釈する場合は、タイムゾーンを含める必要があります。

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"HH:mm:ss aa z"];
NSDate *date =  [df dateFromString:@"4:15:00 PM GMT"];
于 2012-05-30T16:44:30.930 に答える