javascript - 为什么时刻转换此日期不正确?
问题描述
我有一个来自我的 dynamodb 的 GMT 日期和时间格式,我正在尝试使用 momentjs 将其转换为 EST 格式。
2019-06-27 20:00:43.156257
一旦我将日期放入时刻,它就会将其转换为 +4 小时(当它应该是 -4 时)。
2019-06-28T00:00:43.156Z
我正在做的就是这个。
const dbdate = [value-from-db]
const momentdate = moment(dbdate);
我的输出看起来像:
数据库日期:2019-06-27 20:00:43.156257
时刻日期:2019-06-28T00:00:43.156Z
解决方案
这里有两个问题:
1) Moment 正在使用您的本地时区执行时区转换 - 请改用 moment.utc
2)您的日期不是“官方”支持的格式 - 尽管实际上它足够轻松来解析您的字符串。理想情况下,它应该以正确的 ISO 8601 格式提供,以避免任何兼容性问题。
您可以尝试以下方法:
const dbdate = '2019-06-27 20:00:43.156257'.split(' ');
const momentdate = moment.utc(dbdate[0] + 'T' + dbdate[1] + 'Z');
alert(momentdate);
这是一个小提琴。
希望这可以帮助!
推荐阅读
- django - 在Django模板中的for循环中对查询集进行排序不起作用
- javascript - 使用 face-api.js 包 (node.js) 时导入 @tensorflow/tfjs-node 的问题
- docker-compose - 没有得到 shinyproxy.log 保存在容器中
- json - Flutter 从 json 中获取数据而无需异步
- python - 将格式 json 转换为 csv
- javascript - 以编程方式填充 javascript/浏览器弹出凭据请求
- node.js - 代理错误:无法将请求 /api/house-listing 从 localhost:3000 代理到 http://localhost:5000?(ECONNRESET), MERN
- typescript - 打字稿:用泛型表达可选参数
- arrays - 如何使用 for 循环根据用户输入制作多个相似的数组?
- typescript - 未找到 mapbox-sdk-js 的子模块的 Typescript 导入错误