【发布时间】:2019-01-05 16:05:59
【问题描述】:
我查看了几个地方,但找不到解决此问题的方法。我有一些我正在尝试导入的数据,就我而言,它包含表示日期的字符串,这些日期位于Eastern Time Zone (ET) 中。字符串如下所示:
2018 年 7 月 28 日下午 3:39
如果我尝试在 JavaScript 中创建新的日期对象,我可以创建新的日期对象,但问题是没有 ET 时区,所以我可以使用 EST(东部标准时间)创建它) 或EDT(东部夏令时间)。
console.log(new Date('July 28, 2018 03:39 PM EST'));
2018-07-28T19:39:00.000Z
或者
console.log(new Date('July 28, 2018 03:39 PM EDT'));
2018-07-28T20:39:00.000Z
我们可以清楚地看到两者之间有一个小时的差异。确定夏令时是否有效的规则似乎 quite complex 并且可能因地理区域而异。
所以我的问题是:是否有任何解决方案可以根据某些参数检测适用的时区(日光或标准)?我想至少需要年、月、日、时间和标准时区?
由于 JavaScript 以 UTC 格式存储所有日期,因此我找不到任何解决此问题的方法。除非我能找到我正在解析的字符串的标准/夏令时时区,否则我无法可靠地创建日期对象。
我可以很容易地解决东部时间的问题,但我确信存在更好的解决方案来解决所有时区的问题?
我要寻找的解决方案类型如下所示:
let dateString = 'July 28, 2018 03:39 PM'
let timeZone = getStandardOrDaylightSavingsTZ(dateString, 'EST');
// "timeZone" would be set back to EDT right now because it's daylight savings
console.log(new Date(dateString + ' ' + timeZone));
2018-07-28T20:39:00.000Z
【问题讨论】:
标签: javascript datetime time timezone