4

私はこの問題をトラブルシューティングして解決しようとしています: 私が取り組んでいるサーバー (Linux では php 5.2.9) は、正しい現地時間 (America/Buenos_Aires) を持っています:

user@server [/home/site/public_html]$ date
Mon Nov  1 17:11:14 ART 2010

php.iniで設定されてdate.timezone = "America/Buenos_Aires" います また、スクリプトでタイムゾーンを直接設定しようとしました

<?php
ini_set('display_errors', true);
error_reporting(E_ALL|E_STRICT|E_NOTICE);

//date_default_timezone_set("America/Buenos_Aires"); 
//echo  date_default_timezone_get(), "<br>";
echo "ini: ", ini_get('date.timezone'), "<br>";

$now = date("H:i:s T I");
$nowdate = date("Y-m-d");
echo $nowdate." ".$now;
?>

しかし、無駄に、結果は

ini: America/Buenos_Aires
2010-11-01 18:11:14 ARST 1

いつ読むべきか17:11(一貫して 1 時間先です)。こことウェブで見つけたものはすべて、

  • date_default_timezone_set (私が試した)
  • php.ini で date.timezone を設定する (設定されている)
  • サーバーの時刻とクライアントの時刻を混同しています(私はそうではありません)。

何か案は?

編集: 示唆されたように、私はチェックし、コードでわかるように、PHP は DST を適用する必要があると考えており、アルゼンチンは今年は適用しないことにしました。パッチを待つ以外に選択肢はありますか?

編集 2: 提案されているように、タイムゾーンの遷移をダンプしようとしました。私は以下を得ました:

The timezone America/Buenos_Aires switches to standard time on 20 Mar 2011 @ 02:00.
The new GMT offset will be: -10800 (ART) 
4

1 に答える 1

10

数日前に、PHP は、アルゼンチンが今年だけ DST を廃止したという事実をまだ把握していないことを示唆する質問がありました。この決定はまだコード ベースに反映されていないようです。(ただし、確認されたわけではないため、これが100%正しいかどうかはわかりません。)

同じ方法でタイムゾーンをダンプして、PHP バージョンにも当てはまるかどうかを確認してください。

更新:これは確かに問題のようです。私が考えることができる最善の解決策は、タイムゾーンでオフセットを使用することです。Etc/GMT-3

誰かが bugs.php.net でバグを報告する必要があります。

于 2010-11-01T20:24:41.483 に答える