我已经阅读了几篇文章,moment.js上的文档以及一些有关矩和时区处理的问题(在stackoverflow上),但是我还没有找到矩如何决定本地UTC偏移量的答案。我在美国/丹佛时区,在撰写本文时,偏移量是UTC-07:00。Windows时钟已正确设置并正确显示了本地时间。对于UTC时间戳为“ 2017-04-24 17:33:55”,我希望以下代码将displayDate记录为“ 04/24 10:12:34”
dateString = "2017-04-24 17:12:34"
console.log("dateString: " + dateString)
utc = moment.utc(dateString)
console.log("utc: " + utc.format())
now = moment(utc.format())
console.log("now: " + now.format())
displayDate = now.format("MM/DD HH:mm:ss")
console.log("displayDate: " + displayDate)
Run Code Online (Sandbox Code Playgroud)
但是,这是控制台显示的内容:
dateString: 2017-04-24 17:12:34
utc: 2017-04-24T17:12:34Z
now: 2017-04-24T18:12:34+01:00
displayDate: 04/24 18:12:34
Run Code Online (Sandbox Code Playgroud)
我不知道它如何认为我处于UTC + 01:00偏移的时区。我没有使用moment-timezone,也无法解决为什么moment获取错误的偏移量。我注意到有一个TZ环境变量设置为America / Denver,所以这显然没有任何作用。矩如何确定局部偏移?是否有某种默认设置弄乱了某个地方?它必须在我的机器上,因为相同的代码可以在另一台机器上正常工作。
如果有帮助,此代码将包含在AngularJS(版本1.5.8)应用程序中。
干杯,富有
从正常的 JavaScript Date().toString() 输出中,它给了我有关 TZ 环境变量的线索,因为它设置为“America/Denver”。我取消设置 TZ 环境变量,然后重新启动 Web 服务器(Tomcat 服务)并重试。我遇到了同样的问题,但还是决定重新启动整个机器。毕竟,这是 Windows 机器上许多问题的解决方案......果然,这有效!
最重要的是,JavaScript 必须使用 TZ 环境变量(覆盖系统日期和时间设置),并且它似乎只查看前三个字符。
希望这对其他人有帮助。
| 归档时间: |
|
| 查看次数: |
9477 次 |
| 最近记录: |