我尝试构建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
答案 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());