javascript - 仅当javascript中的输入字符串未提供时如何应用默认时区?
问题描述
我正在尝试编写一个函数,该函数将时间戳字符串作为输入(与 javascriptDate
类构造函数的格式相同)并返回自纪元以来的毫秒数。如果时间戳中未指定时区,则应将 UTC 用作默认值。基本上我想要以下但有一个默认时区:
(input) => new Date(input).valueOf();
主要问题是格式繁多。有太多可能的方法来格式化日期,让我编写一个我可以自信的时区解析器。甚至可能有一些我不知道的格式。
我尝试使用Date
类中已经使用的解析器,但如果我使用构造函数,我无法判断生成的时区是由于它在时间戳中指定还是默认时区。
new Date('2020-11-11 00:00').valueOf() === new Date('2020-11-11 00:00+02:00').valueOf(); // May be true or false depending on the local timezone
我尝试使用moment-timezone
. 它公开了一个setDefault
方法,但它不能始终如一地工作:
import moment from 'moment-timezone'; // 0.5.27
moment.tz.setDefault('UTC');
moment('2020-11-11').valueOf(); // 1605052800000
moment('2020-11-11 UTC').valueOf(); // 1605052800000
moment('Nov 11 2020').valueOf(); // 1605045600000 <-- expected 1605052800000 instead. Likely affected by local timezone.
moment('Nov 11 2020 UTC').valueOf(); // 1605052800000
如果只有我可以访问Date
该类使用的任何解析器,我就可以根据是否定义时区来区分,但我认为它没有暴露。
如何在不覆盖时间戳中可能的时区定义的情况下使用默认时区?
注意:我使用的是 node.js,因此无需考虑浏览器差异。
解决方案
推荐阅读
- css - Heroku 上的 React 应用程序 - CSS 样式在移动设备上不起作用
- ios - 检查函数内部的验证保护
- android - Webview 在模拟器上运行良好,但在设备上运行良好
- image - 为什么 GetImageCTM pdf 中图像的 X/Y 坐标总是为零?
- scala - 无法将 11,000 列数据从一个表插入到另一个表
- c++ - 使用 C++ 自动单击
- html - 如何在输入字段之间留出小空间?
- node.js - 如何在 ndoe js 中设置可以在所有树枝页面中访问的全局变量
- c# - Resources.UpdateConfiguration 已过时
- mysql - 将用户名存储到mysql sql文件中的变量中