Javascript 转换带有日期()的时区的具有指定偏移量的时间戳;
我一直在尽可能多地挖掘我能找到的东西,但我似乎找不到我要找的东西,所以我得出结论,我要么不知道我要找的是什么,要么这是不可能的。不管怎样 我试图实现的是以一个时间戳为例:Javascript 转换带有日期()的时区的具有指定偏移量的时间戳;,javascript,date,timestamp,timezone-offset,Javascript,Date,Timestamp,Timezone Offset,我一直在尽可能多地挖掘我能找到的东西,但我似乎找不到我要找的东西,所以我得出结论,我要么不知道我要找的是什么,要么这是不可能的。不管怎样 我试图实现的是以一个时间戳为例:137343960000和一个给定的偏移量-12到12(就范围而言,这是正确的吗?),因此我可以将上面的时间戳相应地减去,并将新的时间戳传递给Date()函数,这样我就可以对其进行操作,使其显示为人类可读 偏移量由两部分组成,在一个实例中由用户指定,而在另一个实例中,如果未指定,则默认为本地getTimezoneOffset()
137343960000
和一个给定的偏移量-12到12(就范围而言,这是正确的吗?),因此我可以将上面的时间戳相应地减去,并将新的时间戳传递给Date()
函数,这样我就可以对其进行操作,使其显示为人类可读
偏移量由两部分组成,在一个实例中由用户指定,而在另一个实例中,如果未指定,则默认为本地getTimezoneOffset()
。所以试着找出如何利用这个范围。做每件事都要相应
想法?我是不是在一个正确的庄园里接近这个
我正在使用的时间戳已经是UTC,不确定这会有什么不同。不幸的是,
日期
对象没有为使用时区提供便利。如果您有偏移量,那么您应该能够以毫秒为单位计算偏移量。然后,您可以将该值添加(减去?)到时间戳中,并使用它来构造适当的日期
这有帮助吗?JavaScriptDate
类型有很多问题,但它的一个主要怪癖是它只理解两个时区——UTC或本地。它在内部以及某些属性和函数中使用UTC,如.toutString()
,但在其他情况下使用本地时区
许多浏览器在解析字符串中的日期
时都会接受偏移量,但这仅用于设置UTC时间。任何正在离开的东西都将再次转换回本地时区
幸运的是,有一些很棒的库可以解决这些问题。非常适合这种情况。以下是您可能正在寻找的示例:
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(1373439600000).tz('America/New_York').format("YYYY-MM-DD HH:mm:ss Z")
// output: "2013-07-10 03:00:00 -04:00"
这并不是我的总体方向,自从我提出这个问题以来一直如此。我目前的问题是计算要分别从时间戳中加/减的偏移量。现在,当我使用getTimezoneOffset()
时,返回的值是420
,我试图弄清楚这是如何应用的?如果我想做任何事情,如果没有,我应该做什么来获取给定的范围并根据该范围计算正确的偏移量。很难确切理解您要做什么,但根据文档,getTimezoneOffset()
以分钟为单位返回本地时区偏移量,所以你需要将它转换成毫秒,并相应地应用到你的时间戳上。分钟,doh,我一定已经略过了。总的来说,我要做的是取范围-12到12,然后我猜在这一点上乘以60,再乘以60000,然后从当前时间戳中加/减,以显示该范围内的时间。总的来说。我们希望它根据用户当前时区中提供的时间戳显示,但为用户提供一个偏移量,这样,如果他们与其他时区的人通信,他们可以相应地切换以同步。然而,用户界面主要由JavaScript处理,它是一个需要调用的大型数据集