西海岸より

つらつらざつざつと

iPhoneアラームが新年に誤作動した理由(憶測)

yahooでこんな記事 アイフォーンのアラーム誤作動で新年早々、寝坊


 アイフォーンのアラーム用アプリケーション(アプリ)で、2011年1月1日~2日にかけて1回限りの設定機能が正常に作動せず、一部の人から寝過ごしてしまったかもしれないとの報告があった。なお、繰り返し鳴る設定の機能は問題なかった。

これってもしかして、以前年月問題ではまったNSDateFormatterのYYYY利用時の注意点が原因では。。。

日付と文字列と日付オブジェクトを相互変換するNSDateFormatterの仕様において、文字列日付変換する際に大文字のYを使うと下記のように特別な変換がかかる。


Y(大文字)はその週の年、つまり1月1日が週の後半(厳密には木曜日以降)だったら、その週は前年の週と見なされる。

2010年1月1日は金曜日なんで2009年の週ということ。2日の土曜も同様。

1/3以降は正常にアラームが動作するということからも、iPhoneアラームのプログラムでも日付フォーマットにYYYYを使ってしまっていて、1/1, 1/2のアラーム自体は2010年の同じ日時にセットされている可能性が高いと思う。

訂正 2011/1/4

よくよくみると、2011年1月1日は土曜なんで上記記述は間違い。すみません。。

ちなみにその後、iPod touchで本体時間を設定でずらしてアラームを試したところ、2日はやはりダメ。4日はOKだったのだけれど。