30

我想将我的 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, 18 Mar 2012 12:01:23 +0800,这是澳大利亚/珀斯的正确时间。但这会返回一个无效的 JavaScript 日期对象。

当我尝试将其转换为时间戳时,例如:

 echo strtotime(date("r"));

我得到 JavaScript 日期 Sun Mar 18 2012 04:03:14 GMT+0000 (WET) (这是今天 js var 的值)

如果我使用:

echo gmstrftime('%s');

我得到:2012 年 3 月 17 日星期六 20:04:30 GMT+0000(湿)。

谁能帮帮我?

4

8 回答 8

59

Luna 的答案中的 PHP 代码与echo dateJavaScript 代码不完全一样。这将完全模仿 JavaScript 代码:

echo date('D M d Y H:i:s O');
于 2013-01-27T17:14:34.493 回答
13

您也可以保留 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

于 2017-03-10T03:36:47.240 回答
10
$.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";
于 2012-03-18T04:09:37.263 回答
7
date('D M d Y H:i:s O')

如果您当前的语言环境不是英语,它将无法工作。

更好的选择是使用:

new Date(<? echo date("Y, n - 1, d, H, i, s") ?>)
于 2015-01-15T10:31:11.790 回答
4

这是 DateTime 对象的示例:

PHP 代码(适用于 PHP 5.3 或更高版本)

$serverDate = new \DateTime('NOW');

// If you want to set a different time zone
// $serverDate = new \DateTime('NOW', new \DateTimeZone('Australia/Perth'));
echo $serverDate->format(DATE_ATOM);

JavaScript 代码

$.get('time.php', function(data) {
  var serverDate = new Date(data);
});
于 2017-05-31T09:37:34.470 回答
3

一个好方法是时间戳:

echo $data = time()*1000;
echo '
  <div id="setxDatetime">The current server time is: </div>
  <script type="text/javascript">
    var x = document.getElementById("setxDatetime");
    x.innerHTML = x.innerHTML + new Date(' . $data . ');
  </script>
';

1381324693000

当前服务器时间为:Wed Oct 09 2013 16:18:13 GMT+0300 (GTB Standard Time)

于 2013-10-09T13:18:54.200 回答
0

可能有更好的解决方案,但这个解决方案对我有用。关键问题是 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
于 2016-09-15T04:36:06.207 回答
-4

这很简单:

new Date("<?= date('Y/m/d H:i:s'); ?>");
于 2016-07-08T19:52:14.847 回答