-3

時刻と日付を表すNSDate2つから作成したいと思います。NSStrings

私のコードを見てください:

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

[form setDateFormat:@"hh:mm dd.MM.yyyy"];

NSDate *notDate = [form dateFromString:[@"" stringByAppendingFormat:@"%@ %@",z.time,z.date]];

NSLog(@"%@ // %@",[@"" stringByAppendingFormat:@"%@ %@",z.time,z.date],notDate);

ログはこの数字を見せてくれます:

12:00 12.05.2013 // 2013-05-11 18:00:00 +0000

左側 - 2 つの文字列、右側 - 日付

最初は 12:00 で、2 番目は 18:00 です。その上、彼らは別の日を持っています!

なぜそれらは異なるのですか?

4

3 に答える 3

0

変えたら

[form setDateFormat:@"hh:mm dd.MM.yyyy"];

[form setDateFormat:@"HH:mm dd.MM.yyyy"];

24 時間形式を使用します。

NSLog(@"%@ // %@",[@"" stringByAppendingFormat:@"%@ %@",z.time,z.date],notDate);

出力する必要が00:00 12.05.2013 // 2013-05-11 18:00:00 +0000あり、それですべてが説明されます。

NSDateFormatter は、手動で変更しない場合は現在のロケールを考慮に入れますが、内部的にはすべての NSDate オブジェクトが GMT で保存されます (したがって+0000)。
あなたのプロファイルによると、あなたはペルミにいます。つまり、GMT より 6 時間進んでいます。

したがって、日付は同じで、アカウントにタイムゾーンを含めて一度印刷すると、一度は印刷しません。

于 2013-05-10T11:31:10.383 に答える
0
 NSLog(@"%@ // %@",[@"" stringByAppendingFormat:@"%@ %@",z.time,z.date],notDate);

この行で、文字列と NSDate を印刷します。文字列から NSDate を作成します。NSDate は暗黙的に文字列を NSDate 形式に変換します..だから、それらは異なります..

于 2013-05-10T09:30:34.023 に答える