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

IT技术 php javascript date timezone timezone-offset
2021-02-12 10:27:25

我想将我的 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(湿)。

任何人都可以帮我吗?

6个回答

在PHP代码月神的回答echo date不完全一样的JavaScript代码。这将完全模仿 JavaScript 代码:

echo date('D M d Y H:i:s O');
这不是我在 Javascript 中看到的格式。我看到这种格式:date('D M d Y H:i:s \G\M\TO (T)');
2021-03-27 10:27:25

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

使用内置解析器解析不受支持的格式不是一个好主意,因为解析依赖于实现,并且很可能在意外和难以找到的情况下失败。
2021-03-31 10:27:25
正是我要找的
2021-04-04 10:27:25
链接已断开(带有相当有趣的 404 PNG 动画):“未找到。很抱歉,我们找不到您要查找的内容。”
2021-04-12 10:27:25
$.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";
我需要为 Sun, 18 Mar 2012 12:10:32 设置我的 javascript 日期对象,以便以下所有计算正常工作!
2021-03-30 10:27:25
它在那里从 unix 时间戳转换(因为毫秒),我忘了删除。无论如何,返回 Sun Mar 18 2012 04:10:32 GMT+0000 (WET) 而 PHP 返回 Sun, 18 Mar 2012 12:10:32 +0800。谢谢
2021-04-04 10:27:25
date('D M d Y H:i:s O')

如果您当前的语言环境不是英语,它将不起作用。

更好的选择是使用:

new Date(<? echo date("Y, n - 1, d, H, i, s") ?>)
关于“当前语言环境不是英语”:您的意思是“当前语言环境不是美国英语”吗?
2021-03-17 10:27:25
警告:PHP 返回编号为 1-12 的月份,但 Javascript 使用 0-11。这将始终为您提供一个月前的时间戳。此外,不能简单地从 JS 日期对象中减去一个月,因为 Javascript 会在构建时“更正”日期……如果您在 1 月 31 日运行此代码,Javascript 将被赋予“2 月 31 日”,然后它会更正3 月 3 日(假设 2 月为 28 天)。
2021-03-19 10:27:25
英语是一种语言,而不是一种语言环境。
2021-04-11 10:27:25

一个好方法是时间戳:

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