-1

現在の日付をログアウトしようとすると、実際の日付とは異なる日付が取得されます:

NSLog(@"日付 %@",[NSDate 日付]);

出力 2012-04-25 23:59:28 +0000

私の機械の時間 2012-04-26 2:02 AM

誰でもこれを修正する方法を知っていますか? ありがとう

編集

nsdataformatter を使用したときに得られるものは次のとおりです

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
[formatter setTimeZone:[NSTimeZone defaultTimeZone]];
NSDate *date =[formatter dateFromString:[NSString stringWithString:@"2012-04-26 01:00:00"]];
 NSLog(@"date %@",date);

出力: 2012-04-25 23:00:00 +0000 紛らわしい!

4

2 に答える 2

2

修正するものは何もありません。NSLog は GMT/UTC で日付を出力しています。ローカル タイムゾーンで表示する場合は、NSDateFormatter を使用する必要があります。

于 2012-04-26T00:14:43.290 に答える
1

これは、現地時間と GMT 時間を印刷するのに役立ちます。

  // gmt
  NSTimeZone *aTimeZone1 = [NSTimeZone localTimeZone];
  NSInteger aTimeInterval1 = -[aTimeZone1 secondsFromGMTForDate: [NSDate date]];
  NSLog(@"GMT: %@", [NSDate dateWithTimeInterval: aTimeInterval1 sinceDate: [NSDate date]]);

  // local
   NSTimeZone *aTimeZone2 = [NSTimeZone localTimeZone];
   NSInteger aTimeInterval2 = [aTimeZone2 secondsFromGMTForDate: [NSDate date]];
   NSLog(@"Local: %@", [NSDate dateWithTimeInterval: aTimeInterval2 sinceDate: [NSDate date]]);

NSDateFormatter を使用したい場合は、これを試してみてください:

  NSDateFormatter *aDateFormatter = [[NSDateFormatter alloc] init];
  [aDateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
  [aDateFormatter setDateFormat:@"dd:MM:yyyy HH:mm:ss"];
  NSLog(@"GMT: %@", [aDateFormatter stringFromDate:[NSDate date]]);

  [aDateFormatter setTimeZone:[NSTimeZone defaultTimeZone]];
  NSLog(@"Local: %@", [aDateFormatter stringFromDate:[NSDate date]]);
于 2012-04-26T01:08:34.207 に答える