PHPサーバー時間をJavaScriptファイルに渡します。
PHPコード:
date_default_timezone_set('Australia/Perth');
echo date("r");
JavaScript:
$.get('time.php', function(data) {
today = new Date(data);
closing = new Date(data);
});
PHPコードは、オーストラリア/パースの正しい時刻であるSun、2012年3月18日12:01:23 +0800を返します。ただし、これは無効なJavaScript日付オブジェクトを返します。
次のようなタイムスタンプに変換しようとすると:
echo strtotime(date("r"));
JavaScriptの日付を取得します2012年3月18日04:03:14 GMT + 0000(WET)(これは、今日のjs varの値です)
私が使用する場合:
echo gmstrftime('%s');
取得:2012年3月17日(土)20:04:30 GMT + 0000(WET)。
誰でも私を助けてくれますか?
NallarのPHPはJavaScriptのようではありません。これはJavaScriptを正確に模倣します。
echo date('D M d Y H:i:s O');
$.get('time.php', function(data) {
today = new Date(data);
closing = new Date(data);
});
文字列に1000を掛ける目的は何ですか?その操作は意味がありません。
編集:
このPHPはそのために動作します。
echo date('D, d M y H:i:s')." +0000";
date('D M d Y H:i:s O')
現在のロケールが英語でない場合は機能しません。
より良い代替手段は
new Date(<? echo date("Y, n - 1, d, H, i, s") ?>)
また、PHPをそのままにして、JavaScriptを使用して日付を解析することもできます。
var date = new Date(Date.parse(DATE));
次に、このようなものでも動作します:
new Date(Date.parse('11 March 2017'));
コンソールログを介して出力されるもの(GMT + 1000はオーストラリアにいるためです):
Sat Mar 11 2017 00:00:00 GMT+1000
詳細はこちら: https://developer.mozilla.org/enUS/docs/Web/JavaScript/Reference/Global_Objects/Date/parse
DateTimeオブジェクトの例を次に示します
PHPコード(> PHP 5.3)で動作します)
$serverDate = new \DateTime('NOW');
// if you want to set different time zone
// $serverDate = new \DateTime('NOW', new \DateTimeZone('Australia/Perth'));
echo $serverDate->format(DATE_ATOM);
JSコード
$.get('time.php', function(data) {
var serverDate = new Date(data);
});
良い方法はタイムスタンプです
echo $data = time()*1000;
echo '
<div id="setxDatetime">CURRENT SERVER TIME IS: </div>
<script type="text/javascript">
var x = document.getElementById("setxDatetime");
x.innerHTML = x.innerHTML + new Date(' . $data . ');
</script>
';
1381324693000
現在のサーバー時間:2013年10月9日水曜日16:18:13 GMT + 0300(GTB標準時間)
より良い解決策があるかもしれませんが、これは私のためのトリックをしました。重要な問題は、前述のように、javascriptは0〜11か月を使用し、phpは1〜12か月を使用することです。
function convert_date_php_js($date){
$converted_date = date("Y", strtotime($date)) . ', ' . (date("n", strtotime($date))-1) . ', ' . date("j", strtotime($date));
return $converted_date;}
$priceDate = "2016-09-14";
$d = convert_date_php_js($priceDate);
//returns 2016, 8, 14