不一致的 getTimezoneOffset 结果
Inconsistent getTimezoneOffset results
文档似乎建议getTimezoneOffset()总是返回当前语言环境的偏移量,而不考虑日期对象。但是我得到的结果不一致,我无法理解。
new Date().getTimezoneOffset() // -120
new Date("2015-03-10T15:48:05+01:00").getTimezoneOffset() // -60
new Date("2015-03-10T15:48:05-04:00").getTimezoneOffset() // -60
另外,有没有更好的方法可以从日期时间字符串中获取时区(也许带有 moment.js)?
> getTimezoneOffset
使用执行代码的计算机的时区设置,返回调用它Date
对象所表示的特定时刻的偏移量。
由于许多时区会更改其夏令时的偏移量,因此不同日期和时间的值不同是完全正常的。 当你在new Date()
上调用它时,你会得到当前的偏移量。
与以 [+/-]HH:mm
格式返回的更常见的偏移量(UTC 以东)相比,从 getTimezoneOffset
返回的值以 UTC 以西的分钟为单位。 因此,您指定的时区在 UTC+1 和 UTC+2 之间交替。 我的猜测是,提供此输出的计算机位于使用中欧时间的区域之一 - 尽管它可能是其他几个区域之一。
此外,当您将偏移量作为ISO8601格式字符串的一部分传入时,该偏移量确实会被考虑在内 - 但仅在解析期间。 应用偏移量,并且Date
对象在内部保留 UTC 时间戳。 然后,它会忘记有关您提供的偏移量的任何内容。 在输出时,某些函数将显式使用 UTC,但大多数函数将在发出结果之前转换为本地时区。
您还询问了如何使用 moment.js 获取日期时间字符串的偏移量。 是的,这很简单:
// Create a moment object.
// Use the parseZone function to retain the zone provided.
var m = moment.parseZone('2015-03-10T15:48:05-04:00');
// get the offset in minutes EAST of UTC (opposite of getTimezoneOffset)
var offset = m.utcOffset(); // -240
// alternatively, get it as a string in [+/-]HH:mm format
var offsetString = m.format("Z"); // "-04:00"
这是因为夏令时。对于您的时区,6 月 11 日为 UTC+2,3 月 10 日为 UTC+1:
// when in DST (since it's June)
new Date("2015-06-11T00:00:00Z").getTimezoneOffset(); // -120
// when not in DST
new Date("2015-03-10T15:48:05+01:00").getTimezoneOffset(); // -60
对我来说,由于我在东部时区,会发生以下情况:
// when in EST
new Date("2015-03-01T00:00:00Z").getTimezoneOffset(); // 300
// when in EDT
new Date("2015-06-01T00:00:00Z").getTimezoneOffset(); // 240
相关文章:
- 奇怪的Javascript结果
- Javascript(jQuery)给了我奇怪的结果
- JSONP请求返回结果,但也触发error_callback
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Javascript,输出结果后页面不断刷新
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- 将地理编码结果转换为php变量以发布到mysql数据库
- AngularJS/HTML/Bootstrap元素用于动态搜索结果
- JQuery:向多个匹配结果添加换行符的最简单方法
- 当查询不在displayField中时,引导Ajax Typeahead不显示结果
- webpack代码拆分了handlerbs文件——结果是文件很大
- JavaScript循环无法正确计算/显示结果
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- 试图将onChange函数作为道具传递给GrandChlidren,结果是TypeError:这是未定义的
- jQuery使用api获取typeform结果
- 根据条件检查数据库结果
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- Angular,表达式{{}}的结果没有插入到ng-click中
- knex:根据结果创建数组的合适方法是什么