我一直在挖掘尽可能多的东西,但我似乎找不到我要找的东西,所以我得出的结论是我不知道自己是什么寻找或不可能。无论哪种方式..
我想要实现的是采用时间戳示例: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/