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

Back to archive index

TAMURA Toshihiko tamur****@bitsc*****
2003年 1月 15日 (水) 21:46:48 JST


脇さん、こんばんは。
田村です。

"K.Waki" <fitz****@mail-*****> wrote:
> 早速、本家の20030114で検証したところ、全ての言語で1970年以前でも正常に表
> 示されました。
> 登録後の変更でも問題ありません。
> 日本語版だけの問題でしょうか・・・

あら、そうですか。

最新版の catalog/includes/general.php の関数 tep_date_short() は、
次のように変更されていますね。
------------------------------------------------------------
// Output a raw date string in the selected locale date format
// $raw_date needs to be in this format: YYYY-MM-DD HH:MM:SS
// NOTE: Includes a workaround for dates before 01/01/1970 that fail on windows servers
  function tep_date_short($raw_date) {
    if ( ($raw_date == '0000-00-00 00:00:00') || ($raw_date == '') ) return false;

    $year = substr($raw_date, 0, 4);
    $month = (int)substr($raw_date, 5, 2);
    $day = (int)substr($raw_date, 8, 2);
    $hour = (int)substr($raw_date, 11, 2);
    $minute = (int)substr($raw_date, 14, 2);
    $second = (int)substr($raw_date, 17, 2);

    if (@date('Y', mktime($hour, $minute, $second, $month, $day, $year)) == $year) {
      return date(DATE_FORMAT, mktime($hour, $minute, $second, $month, $day, $year));
    } else {
      return ereg_replace('2037' . '$', $year, date(DATE_FORMAT, mktime($hour, $minute, $second, $month, $day, 2037)));
    }
  }
------------------------------------------------------------

日本語版の同じ関数をこれに置き換えたら、
正常に日付が表示されるでしょうか。
できれば試してもらえますか? 

この変更は、Windowsサーバ用だとコメントが付いているんですが、
それ以外のサーバでもこの現象が起こるんでしょうか。
脇さんが利用されているサーバのOSとバージョンは何ですか?


でも上の変更では、日本語の日付の並びではうまくいかないかもしれません。
その場合は関数の最後のところを次のようにしてみてください。
------------------------------------------------------------
    } else {
      return ereg_replace('2037', $year, date(DATE_FORMAT, mktime($hour,
$minute, $second, $month, $day, 2037)));
    }
  }
------------------------------------------------------------

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




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