将PHP日期发送到JavaScript日期格式

时间:2012-03-18 04:06:27

标签: php javascript date timezone timezone-offset

我想将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日期Sun Mar 18 2012 04:03:14 GMT + 0000(WET)(这是今天js var的值)

如果我使用:

echo gmstrftime('%s');

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

有人可以帮帮我吗?

8 个答案:

答案 0 :(得分:53)

nallar中的PHP与JavaScript不完全相同,这将完全模仿JavaScript:

echo date('D M d Y H:i:s O');

答案 1 :(得分: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";

答案 2 :(得分:6)

date('D M d Y H:i:s O') 

如果您当前的语言环境不是英语,则无效。

更好的选择是使用

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

答案 3 :(得分:4)

您也可以保留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 :(得分:2)

以下是DateTime对象的示例

PHP代码(适用于&gt; 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);
});

答案 5 :(得分:1)

一个好方法是时间戳

    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标准时间)

答案 6 :(得分: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

答案 7 :(得分:-3)

非常简单:

new Date("<?= date('Y/m/d H:i:s'); ?>");