Zend_DateとZend_Localeの罠

罠というほどではないのかもしれないが、今回は罠ってことにさせてもらう。
このために、3時間くらいの時間を使ってしまったから。

Zend_Dateクラスを引数なしで生成した場合、つまり
$date = new Zend_Date();
って記述した場合。

この場合は、内部でZend_Localeが呼び出され、
ブラウザ->サーバ設定->フレームワーク設定の順で、Locale設定を検索する。
Locale設定とは、日付に関する表現方法が各地で違うため、どの地域表現方法で、
表示するかを決める設定。日本語だと、1月、2月だけど、英語では、Jan、Febみたいな。
そして、現在時刻を設定したZend_Dateクラスが作成される。

今回罠に落ちたのはバッチ処理用のphpプログラムにZend_Dateコンポーネントを
利用して作成しようとして起こったのです。
バッチってことは、主にcronで呼び出され、ブラウザ経由では起動されません。
サーバ設定からLocale設定が取得できればいいのですが、試した結果、
サーバによっては、設定されていなくて、取得できない場合があるようです。
hetemlは、phpがcgi版のためか取得できてませんでした。
(ブラウザでphpのsetlocale関数の戻り値をdumpして確認しました)
フレームワーク設定は、デフォルト状態では、何も設定されていません。

Zendのソースをおったり、ネットで調べたりしてたどり着いた解決策は2つ。