LoginSignup
6
6

More than 5 years have passed since last update.

setDateFormat:@"yyyy-MM-DD HH:mm:ss"で日時がずれる

Posted at

setDateFormat:@"yyyy-MM-DD HH:flag_mm:ss"で日時がずれる

    NSString *firstDate = @"2014-05-20 16:47:00";
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-DD HH:mm:ss"];
    NSDate *setDate = [dateFormatter dateFromString:firstDate];

    NSLog(@"firstDate: %@", firstDate);
    NSLog(@"setDate: %@", setDate);

でlogを吐くと、

firstDate: 2014-05-20 16:47:00
setDate: 2014-01-20 07:47:00 +0000

となって月と時間がズレる。

時間がズレるのはGMTとJSTの差によるもの(参考:http://www.yoheim.net/blog.php?q=20120902)
だから理解できるけど、なぜか月がズレる…?

原因

@"yyyy-MM-DD HH:flag_mm:ss" -> @"yyyy-MM-dd HH:flag_mm:ss"

    NSString *firstDate = @"2014-05-20 16:47:00";
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSDate *setDate = [dateFormatter dateFromString:firstDate];

    NSLog(@"firstDate: %@", firstDate);
    NSLog(@"setDate: %@", setDate);

に変えると

firstDate: 2014-05-20 16:47:00
setDate: 2014-05-20 07:47:00 +0000

で月のズレがなおる

結論

MMに引きずれてDDにしないように!

ちなみに

yyyy → YYYY 

だと年がズレる問題もあるらしい(参考:http://ios.steppers-hi.net/?eid=16)

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6