symfony propelでの日付のデフォルト値
本当は、Doctrineのaskeetの続きを紹介しようと思ったのですが、まだバグが多く3日目の内容からうまく動いてくれなかったので、バージョンアップを待って再度チャレンジしたいと思います。今回の内容は、日付型カラムの取得についてです。
先日リリースされたばかりですが、symfonyの1.0.9にアップデートする際には若干注意が必要です。特に設定を行っていない場合、日付型のカラムを出力する際に表示が変わってしまう可能性があります。
symfonyの1.0.8までは、lib/model/omに生成されるモデルでは、日付型カラムがY-m-dとして出力されましたが、1.0.9ではロケールに従った出力になります。
どういうことかというと、PHPのソースコードでは、以下のように変わったということです。
もし、setlocale(LC_ALL, 'ja_JP.UTF-8'); のようにロケールが指定されていると、「2007年12月03日」のように出力されます。表示する際はよいかもしれませんが、内部で使っている部分で日本語が含まれると困ったことになるでしょう。なお、デフォルトのロケールは以下のように調べることができます。
出力の中のLC_TIMEの設定で出力される内容が変わってきます。たとえば、LC_TIME=Cとなっている場合は、mm/dd/YYのようになります。
出力内容が変わってしまい、特にY-m-dを期待して呼び出したメソッドが日本語込みの文字列になっているとスクリプトが動かなくなることもあるでしょう。
もちろん、この挙動を変更することも可能です。そのためには、config/propel.iniに以下の行を追加します。
これで、symfony propel-build-modelを実行すれば今までと同じようにY-m-dで日付が出力されるはずです。
その他のTIPSとしては、引数にnullを渡すことで、UNIXタイムスタンプ形式で日付を取得することができます。これも知っておくとかなり便利なので、知っておきましょう。
先日リリースされたばかりですが、symfonyの1.0.9にアップデートする際には若干注意が必要です。特に設定を行っていない場合、日付型のカラムを出力する際に表示が変わってしまう可能性があります。
symfonyの1.0.8までは、lib/model/omに生成されるモデルでは、日付型カラムがY-m-dとして出力されましたが、1.0.9ではロケールに従った出力になります。
どういうことかというと、PHPのソースコードでは、以下のように変わったということです。
- //
1.0.8まで - date('Y-m-d');
- //
1.0.9から - strftime('%x');
もし、setlocale(LC_ALL, 'ja_JP.UTF-8'); のようにロケールが指定されていると、「2007年12月03日」のように出力されます。表示する際はよいかもしれませんが、内部で使っている部分で日本語が含まれると困ったことになるでしょう。なお、デフォルトのロケールは以下のように調べることができます。
- echo
setlocale(LC_ALL, "0");
出力の中のLC_TIMEの設定で出力される内容が変わってきます。たとえば、LC_TIME=Cとなっている場合は、mm/dd/YYのようになります。
出力内容が変わってしまい、特にY-m-dを期待して呼び出したメソッドが日本語込みの文字列になっているとスクリプトが動かなくなることもあるでしょう。
もちろん、この挙動を変更することも可能です。そのためには、config/propel.iniに以下の行を追加します。
- propel.defaultDateFormat
= Y-m-d
これで、symfony propel-build-modelを実行すれば今までと同じようにY-m-dで日付が出力されるはずです。
その他のTIPSとしては、引数にnullを渡すことで、UNIXタイムスタンプ形式で日付を取得することができます。これも知っておくとかなり便利なので、知っておきましょう。
トラックバックURI
最近の記事
システム開発エンジニア募集! [2012年02月03日 : 小林有佳]
OpenVPNで細々便利な設定 [2012年01月31日 : 門脇優児]
【iOS】Viewの開発・デバッグに役立つ色々 [2012年01月23日 : 中川善樹]
PHPDocumentorの利用方法まとめ [2012年01月19日 : 笹亀弘]
Google Chart Toolsを使ってサイトマップを描こう! [2011年12月21日 : 志田仁美]
stumpwm設定v2 [2011年12月19日 : 門脇優児]
Mashup Awards 7の授賞式が行われました [2011年12月16日 : 中川善樹]
社員旅行に行きました [2011年12月12日 : 大橋寛子]
iCloud風のアイコンを作成する(Fireworks) [2011年12月07日 : 和田記光]
iScroll4でネイティブに近いスマホ向けHTMLページを作成する [2011年12月02日 : 松田惇]













コメントフォーム