私はイベントサイトで作業しています。ローカルホストのMySQLデータベースからUTC時刻を取得し、PHPを使用してそれらをページにエコーし、Javascriptを使用してユーザーのタイムゾーンに変換します。なんらかの理由で、Javascriptは私がMySQLから得た時間から2時間遅れています。自分自身と私のサーバーの両方がMountain Standard Timezoneにあるので、Javascriptは日付を6時間戻しますが、代わりに日付は8時間戻ってきます。夏時間でさえ、2時間ではなく1時間の時間差だけを占めます。Javascript日付オブジェクトがタイムゾーンのオフセットを適切に調整していない
は、ここで日付オブジェクトにPHPのタイムスタンプを翻訳し、YYYY-MM-DD HHでそれを出力するためのJavascriptです:II:SS形式(jQueryのを使用しています):
function leadingzeros(string){
if (string.toString().length == 1){
string = "0" + string;
}
return string;
}
$(document).ready(function(){
var thisdate = new Date(<?php echo (strtotime($row['start'])*1000);?>);
$("#jsdate").html(
thisdate.getFullYear()+"-"+leadingzeros((thisdate.getMonth()+1))+"-"+ leadingzeros(thisdate.getDate())+" "+
leadingzeros(thisdate.getHours())+":"+leadingzeros(thisdate.getMinutes())+":"+leadingzeros(thisdate.getSeconds())
);
});
はここで文書本体のためのPHPです:
<?php
$row = mysqli_fetch_assoc($result);
echo "<ul><li>MySQL datetime object: ".$row['start']."</li>".
"<li>PHP Unix timestamp: ".strtotime($row['start'])."</li>".
"<li>PHP date string: ".date("Y-m-d H:i:s",strtotime($row['start']))."</li>".
"<li>PHP date minus 6 hours (which is our timezone offset): ".date("Y-m-d H:i:s",strtotime($row['start']) - (6*3600))."</li>".
"<li>Javascript date: <span id='jsdate'></span></li></ul>";
?>
これは、出力:
- MySQLのdatetimeオブジェクト:2012-04-07午前23時00分00秒
- PHP Unixタイムスタンプ:1333832400
- PHPの日付文字列:(私たちのタイムゾーンがオフセットされます)2012年4月7日午後11時00分〇〇秒
- PHPの日付マイナス6時間:2012-04-07午後5時○○分00秒
- JavaScriptのDate:私が読んだ文書の2012-04-07午後三時00分00秒
なしには答えが得られます。 MSTのPHP日付の2時間後にJavascriptの日付が表示されるのはなぜですか?
はあなたのサーバ時間であり、クライアントマシンの時間は同じですか?はいの場合はタイムゾーンも同じですか? – nandu
ここにお試しください:http://jsfiddle.net/wQMTu/ - あなたは何を見ますか? – Alexander
答えはありませんが、これは役立ちます:時間の値をUTCで保存して輸送し、ユーザーに表示される場合、いつ、どこで、どこで、現地時間に変換するかをお勧めします。そうするならば、あなたのサーバがMSTであり、あなたのブラウザが何か他のものであることは重要ではありません。これは、大きなカテゴリのバグを排除するのに役立ちます。それは簡単に再ホスティングすることができます。等々。 – Cheeso