setDateFormat:@"yyyy-MM-DD HHss"で日時がずれる
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 HHss" -> @"yyyy-MM-dd HHss"
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)