PHP和Jquery倒数计时器的格林尼治标准时间不同

时间:2019-01-08 16:06:55

标签: javascript php date datetime utc

我尝试构建jquery倒数计时器,但是结束日期在具有时间戳自定义格式的mysql数据库中

这是我在数据库中保存的日期。

2019-01-09 12:48:29

该日期为格林尼治标准时间+0000,即世界标准时间。但是,当我尝试在下面的javascript中显示它时

var countdown = new Date("<?php echo $getDate['date_end'];?>");
console.log(countdown);

它将显示输出

Wed Jan 09 2019 12:48:29 GMT+0700 (GMT+07:00)

那是错误的,因为当我将$ getDate ['date_end']保存为数据库时采用UTC格式(+0000)时,为什么它在JavaScript中成为GMT +0700?

我尝试使用此代码将其转换为UTC

var countdown = new Date("<?php echo $getRound['date_end'];?>");
var a = countdown.toUTCString();
console.log(a);

但是输出将给出不同的时间

Wed, 09 Jan 2019 05:48:29 GMT

1 个答案:

答案 0 :(得分:0)

如果数据库中的所有日期时间值都存储在UTC中,则可以在从数据库中解析日期时间字符串后,使用new Date(Date.UTC(...))在UTC中创建js日期对象。由于浏览器实现不一致,不建议使用new Date()解析日期时间字符串,因此下面的示例包括一些手动解析以及将js中使用的month值调整为month值。

const s = '2019-01-09 12:48:29';

let [y, m, d, hh, mm, ss] = s.match(/\d+/g);
let utc = new Date(Date.UTC(y, m - 1, d, hh, mm, ss));

console.log('OUTPUT may vary:', utc);
console.log('UTC datestring:', utc.toUTCString());
console.log('Local datestring:', utc.toLocaleString());