[Tep-j-general] Re: アカウント情報

Back to archive index

TAMURA Toshihiko tamur****@bitsc*****
2003年 1月 15日 (水) 10:08:47 JST


こんにちは、田村です。

Masahiko Nagata <nagat****@ideas*****> wrote:

> こちらのサーバーでハードウェア時間を1970年01月15日とかに設定して(システム時
> 間は現時間のまま)、メンバー新規登録をしてみましたところ、1970/01/01以降の生
> 年月日は正常に入力できましたが、1960/01/01は見事に1970/01/01になってしまいま
> した。
> この状態でMySQLの顧客テーブルに記録されている生年月日(customers_dob)を確認
> すると、1960/01/01となっていました。
> 
> この状態から、システム時間とハードウェア時間を正確な日付に戻しても(年の為サー
> バー再起動)、やはり1970/01/01と表示されたままとなります。
> 
> # MySQLの顧客テーブルに記録されている日付は1960/01/01となっています。

osCommerceの顧客の生年月日は、永田さんが書かれているように、
単純にテキストでデータベースに記録されています。

ただ、その日付を表示するときに、catalog/includes/general.php の関数
tep_date_short() を利用します。
その中で日付の表示形式を作るのにPHPの date() 関数を呼んでいます。
この date() 関数もOSの機能を利用しているんでしょうから、
日付が正常に表示されないのはOSの設定の問題なんですね。
# でも、こんな現象が起こるとは意外でした。

それで、OSの設定に関係なく無理やり修正するとしたら、
----------------------------------------
return date(DATE_FORMAT, mktime($hour, $minute, $second, $month, $day,
$year));
----------------------------------------
の部分を、
----------------------------------------
return $year.'/'.$month.'/'.$day;
----------------------------------------
のように書き換えてしまう方法があると思います。


> で、もしサーバーが上記の状態だとした場合の戻し方なのですが....
> うーん、サーバーの電源を落として再起動しても1970/01/01と強制的に表示される様
> になってしまいました....(^^;)

えーと、困りましたね。
setclock コマンドを使ったらどうでしょうか?

--
田村敏彦 / 株式会社ビットスコープ
E-mail:tamur****@bitsc*****
http://www.bitscope.co.jp/




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