javascript - PHP 和 Jquery 倒数计时器不同的 GMT
问题描述
我尝试构建 jquery 倒数计时器,但结束日期在带有时间戳自定义格式的 mysql 数据库中
这是我在数据库中保存的日期。
2019-01-09 12:48:29
该日期是 GMT+0000,即 UTC。但是当我尝试在 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
解决方案
如果数据库中的所有日期时间值都以 UTC 格式存储,那么您可以new Date(Date.UTC(...))
在解析数据库中的日期时间字符串后使用 UTC 格式创建 js 日期对象。new Date()
由于浏览器实现不一致,不建议解析日期时间字符串,因此下面的示例包括一些手动解析和调整月份值对js中使用的月份索引的调整。
const s = '2019-01-09 12:48:29';
const [y, m, d, hh, mm, ss] = s.match(/\d+/g);
const 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());
推荐阅读
- javascript - 无法阻止表单在点击后自动提交两次
- html - 如何使用 nodejs 解析 html 页面以查找 qr 码?
- c# - 使用多个 DefaultContractResolver 反序列化 JSON
- ansible - 如何解决具有特定属性的库存成员?
- reactjs - 当元素更改时,从数组映射的 React Native 动态视图不会更新
- c++ - 程序输出奇怪的字符
- python - 如何使二进制文件的路径在 Python 虚拟环境中保持一致?
- javascript - 在没有页面重新加载的情况下,Sapper 会话在生产构建中没有正确设置
- django - Django 陈旧的 CSRF 令牌
- pine-script - 订单在同一条柱上执行止损和反转