【问题标题】:Send date from PHP to Javascript将日期从 PHP 发送到 Javascript
【发布时间】:2023-03-26 16:40:01
【问题描述】:

我已经尝试过this 的问题,但它并没有解决我的问题。

我有一个 PHP 服务器,它通过 JSON 向用户发送日期,然后由 Javascript 处理:

PHP:'date' => date('D M d Y H:i:s O', strtotime($array['Time']))

Javascriptvar time = new Date(data.date).toLocaleString()

但我得到的不是 18. January 2015 ...,而是 3. March 5877521 -596:-31:-23 GMT+0:53:28。有什么问题?

您可能需要了解的一些事项:服务器具有中欧时区以及发送日期。我正在尝试(以上只是一个示例)使用 javascript 将日期国际化。

【问题讨论】:

  • 请提供原始数据。日期值(来自控制台)
  • $array['Time']的值是多少?

标签: javascript php date


【解决方案1】:

我不得不将 Marc B 的回答中的时间戳解析为 int(为什么?):

我现在解决了:new Date(parseInt(data.date)) 有效

【讨论】:

  • 这没有意义。如果您显示实际的 JSON,我确信会有一些奇怪的东西,例如 date:" 1421950569 " 在这种情况下您可以使用 trim 而不是 parseInt
【解决方案2】:

为什么要传递一个字符串? JS 的日期构造函数会接受时间戳:

var time = new Date(<?php echo strtotime($array['Time']) ?>000);

请注意其中的000。 JS 使用毫秒,而 strtotime 以秒为单位返回,因此您可以有效地构建:

var time = new Date(12345678000);
                    ^^^^^^^^---seconds from php
                            ^^^---instant conversion to milliseconds.

【讨论】:

  • 然后开始查看 data.date 在您的 JS 代码中的样子,因为没有办法将正确格式化的日期字符串解释为具有年份 5877521。或“负 590-六点”。
  • 我做了:Javascript new Date().getTime() == data.date 是一样的(除了毫秒,使用时间戳)但是如果我做 new Date(data.date) 这是错误的。
  • 数字时间戳,例如:1421950569000
  • 我现在解决了:new Date(parseInt(data.date)) 有效
  • 我的一个用户刚刚报告了类似的问题。服务器发送类似“Mon, 07 Mar 2016 17:29:46 UTC +00:00”的字符串,前端使用JS显示日期:new Date("Mon, 07 Mar 2016 17:29:46 UTC +00:00").toLocaleString()。这对我来说很好,但我的用户报告说返回的日期是 3 月 5877521。
猜你喜欢
  • 2012-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-14
相关资源
最近更新 更多