javascript - 使用 Date() 转换具有指定时区偏移量的时间戳;

标签 javascript date timestamp timezone-offset

我一直在挖掘尽可能多的东西,但我似乎找不到我要找的东西,所以我得出的结论是我不知道自己是什么寻找或不可能。无论哪种方式..

我想要实现的是采用时间戳示例:1373439600000 和 -12 到 12 的给定偏移量(就范围而言是否正确?)这样我就可以采用它上面的时间戳相应地从中减去,并将新的时间戳传递给 Date() 函数,这样我就可以对其进行操作以实现人类可读显示。

偏移量由两部分组成,一个是用户指定的,另一个是如果未指定则默认为本地 getTimezoneOffset()。因此,试图弄清楚如何采用该范围并与之合作。相应地做每件事。

想法?我什至在正确的庄园里接近这个吗?

我正在使用的时间戳已经是 UTC,不确定这是否会有所不同。

最佳答案

JavaScript Date 类型有许多 问题,但它的主要怪癖之一是它只理解两个时区 - UTC 或本地。它在内部和某些属性和函数(如 .toUTCString())中使用 UTC,但在其他方面使用本地时区。

许多浏览器在从字符串解析 Date 时会接受一个偏移量,但这只会用于设置 UTC 时间。任何离开的地方都将再次转换回本地时区。

幸运的是,有一些很棒的库可以解决这些问题。 Moment.js非常适合这个。以下是您可能要寻找的内容的示例:

moment(1373439600000).zone(8).format("YYYY-MM-DD HH:mm:ss Z")

//  output: "2013-07-09 23:00:00 -08:00"

当然,您可以根据需要进行格式化,或者传入更复杂的区域偏移量,如"+05:30"。如果您需要使用实际的 IANA 时区,则有 moment-timezone配套项目,你可以这样做:

moment(1373439600000).tz('America/New_York').format("YYYY-MM-DD HH:mm:ss Z")

//  output: "2013-07-10 03:00:00 -04:00"

关于javascript - 使用 Date() 转换具有指定时区偏移量的时间戳;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17955649/

相关文章:

javascript - Shiny 的 R : Change border color of selectInput

javascript - 添加 require 关键字会破坏原生 JavaScript 函数

javascript - 如何在 JavaScript 中匹配给定日期差异之间的日期

java - 如何将 java.sql.Timestamp 格式化为 (hh :mm AM/PM)

javascript - 使用javascript将时间戳添加到iframe中的src(防止缓存)

javascript - Google API 请求收到不良结果

javascript - 我怎样才能确保每 2 种随机颜色被使用两次?

java - 如何测试应返回特定日期的日期函数

PHP 解析日期字符串

r - 在 R 中将时间戳标记到 session 中