2011年1月4日火曜日

YYYY じゃなくて yyyy

バグが出るとすれば元日あたりに出るだろうなぁと思ったら出た。
Moneyha ってiPhoneアプリで出た。不具合出た。
レビューは優しさに満ち溢れていたのでとても嬉しかった。
(バグありなのに星4と3を付けてレビューしていただけた。)

Objective-C でのはなし。 Xcode 3.2.5 and iOS SDK 4.2.1 で試してる。

単純な話で、YYYY が間違いだった。 yyyy が正しい。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy"]; // ここを @"YYYY" ってしてた。

これだけだとなんなので、調べる過程で出てきた NSDate のポイントをいくつか。

// とりあえずタイムゾーンを確かめておこうよ
NSLog(@"%@", [NSTimeZone defaultTimeZone]); // Asia/Tokyo (GMT+09:00) offset 32400

// NSLogはタイムゾーン関係ないから注意。
NSLog(@"%@", [NSDate date]);

// もうちょいわかり易く。
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *d = [formatter dateFromString:@"2011-01-01 00:00:00"]; // d は日本時間だよ
NSLog(@"%@", [formatter stringFromDate:d]); // 当然 2011-01-01 00:00:00
NSLog(@"%@", d); // こっちは? 2010-12-31 15:00:00 +0000 が正解。タイムゾーンは日本じゃなくてグリニッジ標準時。


そんな感じで。

YYYY と yyyy の違いはこちらの方のブログに書かれてました。ありがとう。
『NSDateFormatterのYYYY利用時の注意点』
http://d.hatena.ne.jp/mmasashi/20101111/1289489570

0 件のコメント:

コメントを投稿