如何解决Moment.js,Moment-timezone:在东部时区输入和显示吗?
我有一个javascript应用程序,用户坚持认为,无论该应用程序用户身在何处,他们都希望用户使用东部时间输入日期/时间。它们将被发送到数据库并存储,然后在应用程序中再次显示并显示在东部时区。 所以我一直在寻找使用moment.js和moment-timezone,但无法弄清楚它如何工作。 当我尝试const objMoment = moment()时,objMoment似乎包含与当前时间的时间偏移。 我想获取一个时刻的时刻对象,然后是objMoment.tz(“ America / New_York”) 但是我最后的时间比原先的时间少了5个小时。
const objMoment = moment();
const objEastern = objMoment.clone().tz("America/New_York");
debugger;
formData.SwoDate = objMoment.toDate();
debugger;
解决方法
几件事:
-
您无需创建本地时刻并将其克隆。您可以使用以下方法直接在特定时区构造一个时刻:
moment.tz('America/New_York')
-
自从您调用
toDate()
以来,结果始终是代表“现在”的Date
对象。这是否来自设置为不同时区的Moment都无关紧要。时间上的时刻相同。moment().valueOf() // 1600198416842 moment.utc().valueOf() // 1600198416842 moment.tz('America/New_York').valueOf() // 1600198416842 new Date().valueOf() // 1600198416842 Date.now() // 1600198416842
-
如果要查看其他时区的时间,则需要使用类似
format
的函数。moment.utc().format() // "2020-09-15T19:33:36Z" moment.tz('America/New_York').format() // "2020-09-15T15:33:36-04:00"
-
Moment是旧版库。您可能应该选择其他库,或者根本不选择任何库。请阅读:Moment Project Status
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。