[Tep-j-general] タイムゾーンの変更

Back to archive index

Margy Mutoh margy****@roseb*****
2004年 12月 8日 (水) 19:11:44 JST


こんにちは。Margyです。

海外サーバで運用する場合にタイムゾーンの変更をどこでしたらいいか?
というテーマについては、過去にも何度か出てきていますが、
本家フォーラムを参考に、最近やっとどうにか成功しつつありますので、
ご報告がてら、アドバイスいただきたく投稿します。

私の行った改造は、以下のような手順です。

1)
admin/includes/application_top.php
catalog/includes/application_top.php それぞれの冒頭に、以下の1行を
挿入する。

    putenv("TZ=Asia/Tokyo");

2)
admin/includes/languages/japanese.php
catalog/includes/languages/japanese.php  それぞれの冒頭に、以下の3行を
挿入する。

    putenv("TZ=Asia/Tokyo");
    @setlocale(LC_TIME, 'ja_JP');
    $jp_date_time = date("Y-m-d H:i:s");

※私は DATE_FORMAT_SHORT の直前に入れました。

3) 以上を行ったうえで、必要なphpファイルにおいて、日付時刻取得の
now() を $jp_date_time(記述のしかたによっては'".$jp_date_time."')
に変更する。

※変更すべきファイルがかなりありますので、grepで now() を検索して
適宜、変更しました。

この方法は putenv が使えるサーバでないとダメだという話だったと
思いますが、私のところでは使えたので、これでほぼ解決しました。


そこで一つアドバイスいただきたいのですが、私の入れているCredit
Class &  Gift Voucherのモジュール内で、どうにもこの変更が効かない
部分がありました。
問題のコードは、catalog/includes/modules/order_total/ot_coupon.php
というファイルなのですが、該当部分はデフォルトでこんなコードです。

    $date_query=tep_db_query("select coupon_start_date from " .
TABLE_COUPONS . "
    where coupon_start_date <= now() and
    coupon_code='".$HTTP_POST_VARS['gv_redeem_code']."'");

ここの now() を $jp_date_time に置き換えるために、いろいろと試行
錯誤の末、now() を now($jp_date_time) とすることで、どうにか正常に
機能するようになりました。

ただ、他のファイルでは now() を $jp_date_time(クエリ中の場合は
'".$jp_date_time."')と置き換えることで実現できた変更が、この
ファイルだけ、こういう記述のしかたでしか動かないのが、今ひとつ
気になってます。
now($jp_date_time) という記述のしかたは正しいのでしょうか?

関数や変数の扱い方がいまいちよくわかっていないので、ここだけを
こういう書き方をすることで、他の部分に何か影響があるのでは?…と
心配です。
どなたか、アドバイスいただけましたら幸いです。
よろしくお願いいたします。

Margy Mutoh






Tep-j-general メーリングリストの案内
Back to archive index