|
|
1
59
日期对象的基础值实际上是UTC格式的。为了证明这一点,请注意如果您键入
大音符,UTC代表 通用的 时间码。现在两个不同地方的当前时间是相同的UTC,但是输出的格式可能不同。 我们需要的是一些格式
这很有效,但是……因为其他日期方法描述了用户的时区,所以不能真正使用它们。你想要的是一个与赫尔辛基时区相关的日期对象。此时,您可以选择使用一些第三方库(我建议您这样做),或者修改date对象,以便您可以使用它的大多数方法。 选项1-第三方式的时刻时区
这看起来比我们接下来要做的要优雅得多。 选项2-破解date对象
它仍然认为它是GMT-0700(PDT),但如果你不太盯着它看,你可能会误认为它是一个日期对象,对你的目的是有用的。
我顺手跳过了一部分。你需要能够定义
结论 -我认为特别是为了这个目的,你应该使用 moment-timezone . |
|
|
2
17
要计算毫秒和用户的时区,请使用以下命令:
|
|
|
3
14
只是另一种方法
干杯! |
|
|
4
13
我怀疑 Answer 没有给出正确的结果。在这个问题中,询问者希望在赫尔辛基将时间戳从服务器转换为当前时间,而不考虑用户的当前时区。 事实上,用户的时区是我们无法信任的。 如果时间戳是1270544790922,我们有一个函数:
当纽约人访问页面时,alert(_helsenkitime)会打印:
当Finlander访问页面时,Alert(_Helsenkitime)会打印:
因此,只有当页面访问者的计算机中有目标时区(欧洲/赫尔辛基)时,该功能才是正确的,但在世界上几乎所有其他地方都失败了。而且由于服务器时间戳通常是unix时间戳,根据utc的定义,即unix纪元(1970年1月1日00:00:00 gmt)以来的秒数,因此我们无法根据时间戳确定dst或非dst。 因此,解决方案是忽略用户的当前时区,并实现某种计算UTC偏移量的方法,无论日期是否在DST中。javascript没有本机方法来确定用户当前时区以外的其他时区的dst转换历史记录。我们只需使用服务器端脚本就可以实现这一点,因为我们可以方便地访问服务器的时区数据库以及所有时区的整个转换历史。 但是,如果您无法访问服务器(或任何其他服务器)的时区数据库,并且时间戳是UTC格式的,则可以通过在JavaScript中硬编码DST规则来获得类似的功能。 要覆盖欧洲/赫尔辛基1998-2099年的日期,可以使用以下函数( jsfiddled ):
用法示例:
无论用户时区如何,都会打印以下内容:
当然,如果您可以以偏移量(dst或non-dst one)已经添加到服务器上的timestamp的形式返回timestamp,那么您不必在客户端计算它,并且可以大大简化函数。但请记住不要使用timezoneoffset(),因为这样就必须处理用户时区,而这不是所需的行为。 |
|
|
5
2
假设您得到赫尔辛基时间的时间戳,我将创建一个日期对象,设置为1970年1月1日午夜UTC(忽略浏览器的本地时区设置)。 然后添加所需的毫秒数。
请稍后注意,始终从date对象询问utc值。这样,无论本地设置如何,用户都将看到相同的日期值。 否则,日期值将根据本地时间设置进行移动。 |
|
|
6
0
你可以用
|