我一直在挖掘尽可能多的东西,我似乎无法找到我想要的东西,所以我得出的结论是,我要么不知道我是什么寻找或不可能。无论哪种方式..
我想要实现的是采用时间戳示例:1373439600000
和给定的偏移量-12到12(这是正确的,就范围而言?)所以我可以把时间戳放在上面减去相应地,并将新的时间戳传递给Date()
函数,以便我可以将其操作为人类可读的显示。
偏移量是两部分,它是在一个实例中指定的用户,而在另一个实例中,如果未指定,它将默认为本地getTimezoneOffset()
。因此,试图弄清楚如何采用该范围并与之合作。要做相应的事情。
想法?我甚至在一个正确的庄园里接近这个吗?
我正在使用的时间戳已经是UTC,不确定这会产生什么影响。
答案 0 :(得分:3)
JavaScript Date
类型有许多问题,但其主要问题之一是它只能理解两个时区 - UTC或Local。它在内部使用UTC,在某些属性和函数中使用.toUTCString()
,但它使用本地时区。
许多浏览器在从字符串解析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"
答案 1 :(得分:0)
不幸的是Date
对象没有提供用于处理时区的设施。如果你有偏移量,你应该能够以毫秒为单位计算偏移量。然后,您可以将该值添加(减去?)到您的时间戳,并使用它来构建相应的Date
。
这有帮助吗?