web-dev-qa-db-ja.com

Send PHP date to JavaScript date format

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)。

誰でも私を助けてくれますか?

26
jribeiro

NallarのPHPはJavaScriptのようではありません。これはJavaScriptを正確に模倣します。

echo date('D M d Y H:i:s O');
54
simontemplar
$.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";
10
Luna
date('D M d Y H:i:s O') 

現在のロケールが英語でない場合は機能しません。

より良い代替手段は

new Date(<? echo date("Y, n - 1, d, H, i, s") ?>)
6
user963714

また、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

4
Rob

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);
});
2
georgiar

良い方法はタイムスタンプです

    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標準時間)

1
Petre Sosa

より良い解決策があるかもしれませんが、これは私のためのトリックをしました。重要な問題は、前述のように、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
0
Chad