読者です 読者をやめる 読者になる 読者になる

chikuchikugonzalezの雑記帳

趣味とか日記とかメモとか(∩゚д゚)

Zend_DateとZend_LocaleとZend_Dbではまったことのメモ

開発 PHP Zend Framework

Zend_Dateを使ってMySQLに日付データを入れようとしたらなんだかしらないけどデフォルトに設定した'0000-00-00 00:00:00'になる問題にぶちあたったので、解決までのメモ。
たぶんこの現象 (Zend_Date::now() storing wrong date into DB) と同じだと思う。あ、使ってるバージョンはZend Framework 1.9.8 + PHP 5.2でした。

それで、とりあえずなんで日付データが入らないのかと調べるために、Zend_Db_Table_Selectをassembleしたらホントびっくりした。だって日付データが

Tue, 15 Nov 1994 08:12:31

みたいなので格納しようとしてた(´・ ω・`)

結論

Zend_Localeでの自動フォーマット使うな

用は、Zend_Dateを文字列にするときに

<?php
$date = new Zend_Date();
$date->toString('yyyy/MM/dd HH:mm:ss');
?>

のようにしないで、ロケールに従って整形してくれてたのが原因だったとorz*1
とりあえず全部toString使うようにして対処しておいた*2

*1:言語保存にZend_Localeを使ってた。こうしておくとZend_Translateとかでの翻訳がすごい楽

*2:Zend_Db_Adapter側がこのへんやってくれないかなぁ