【问题标题】:JavaScript displayed time is different on two devices (Apple-Windows)JavaScript 显示的时间在两台设备上不同(Apple-Windows)
【发布时间】:2020-06-15 21:12:40
【问题描述】:

我目前正在开发一个可在各种设备(Apple、Windows、智能手机、平板电脑、笔记本电脑)上运行的网站。从我的后端 PHP 脚本,字符串格式的日期时间值被发送到我的 JavaScript。当我在笔记本电脑(Windows-Chrome)上运行此代码时,我得到的时间与我在智能手机(Apple - Safari)上运行它的时间不同。在我的智能手机上显示一个小时太多了。如何解决此问题以获得相同的值以在进一步的代码中处理?如果可能的话,我希望 PHP 保持原样。

PHP 字符串值:

2019-01-01 01:00:00

在我的网页上我测试了这段代码,

var phpValue = "<?php echo $tijdCountdownPauze; ?>";
var phpValueSplitted = phpValue.split(" "); 
var phpvalueCombine = phpValueSplitted[0] + "T" + phpValueSplitted[1];
var phpValueCombinedDate = new Date(phpvalueCombine);
document.write(phpValueCombinedDate);
document.write("<br>");

Windows 笔记本电脑在 Chrome 中的输出:

Tue Jan 01 2019 01:00:00 GMT+0100 (Midden-Europese standaardtijd)

Apple iPhone 在 Safari 中的输出:

Tue Jan 01 2019 02:00:00 GMT+0100 (CET)

【问题讨论】:

  • 你应该使用 yyyy/MM/dd 格式,然后它们就相等了。
  • 感谢您的快速回复!不幸的是,这不起作用。也许我做错了什么.....const search = '-'; const replaceWith = '/'; var phpValue = "&lt;?php echo $tijdCountdownPauze; ?&gt;"; var phpValueReplaced = phpValue.split(search).join(replaceWith); var phpValueSplitted = phpValueReplaced.split(" "); var phpvalueCombine = phpValueSplitted[0] + "T" + phpValueSplitted[1]; alert(phpvalueCombine); var countDownDate = new Date(phpvalueCombine); document.write(phpValueOK);
  • @DevanshBaldwa 感谢您的大写:还有一些需要修复,啊啊。你可以看到我的后续编辑。
  • @sebastiaan 一个浏览器将 01:00:00 读取为本地时间(对您而言是 GMT+1),另一个浏览器将其读取为 GMT+0 时间,然后显示它是当地时间(GMT+1 为您)。主要问题是您没有明确定义解释日期的原始时区。

标签: javascript ios google-chrome time safari


【解决方案1】:

Z(或any other timezone)添加到时间字符串。

phpValueSplitted[0] + "T" + phpValueSplitted[1] + "Z"
// or
phpValueSplitted[0] + "T" + phpValueSplitted[1] + "+00:00"

【讨论】:

  • 谢谢,但我几乎可以肯定这个问题应该作为另一个问题的副本关闭,而不是回答它。
  • @Cœur 同意。但是没有足够的声誉我做不到
  • 我相信您可以标记一个问题,以便在早期声誉时关闭。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-06
  • 1970-01-01
  • 2014-01-07
  • 1970-01-01
相关资源
最近更新 更多