相关疑难解决方法(0)

使用设置的时区创建日期而不使用字符串表示

我有一个网页,每天,每月和每年有三个下拉菜单.如果我使用Date带有数字的JavaScript 构造函数,那么我得到一个Date当前时区的对象:

new Date(xiYear, xiMonth, xiDate)
Run Code Online (Sandbox Code Playgroud)

给出正确的日期,但由于夏令时,它认为日期是GMT + 01:00.

这里的问题是我然后将它传递Date给Ajax方法,当日期在服务器上反序列化时,它已经转换为GMT,因此丢失了一个小时,将一天移回一.现在我可以将日,月和年单独传递到Ajax方法中,但似乎应该有更好的方法.

接受的答案指出了我正确的方向,但只是单独使用setUTCHours()改变了:

Apr 5th 00:00 GMT+01:00 
Run Code Online (Sandbox Code Playgroud)

Apr 4th 23:00 GMT+01:00
Run Code Online (Sandbox Code Playgroud)

然后我还必须设置UTC日期,月份和年份以结束

Apr 5th 01:00 GMT+01:00
Run Code Online (Sandbox Code Playgroud)

这就是我想要的.

javascript timezone

392
推荐指数
13
解决办法
66万
查看次数

如何将JavaScript日期初始化为特定时区

我将特定时区的日期时间作为字符串,我想将其转换为本地时间.但是,我不知道如何在Date对象中设置时区.

例如,Feb 28 2013 7:00 PM ET,我可以

var mydate = new Date();
mydate.setFullYear(2013);
mydate.setMonth(02);
mydate.setDate(28);
mydate.setHours(7);
mydate.setMinutes(00);  
Run Code Online (Sandbox Code Playgroud)

据我所知,我可以设置UTC时间或本地时间.但是,我如何在另一个时区设置时间?

我试图使用添加/减去UTC的偏移量,但我不知道如何应对夏令时.我不确定我是否正朝着正确的方向前进.

如何在javascript中将时间从不同的时区转换为当地时间?

javascript timezone

176
推荐指数
8
解决办法
23万
查看次数

在Javascript中使用时区和夏令时

我的单页javascript应用程序通过REST调用以JSON格式检索数据.使用标准ISO8601格式的UTC时区格式化日期,例如2011-02-04T19:31:09Z.

注册该服务时,用户从下拉列表中选择他们的时区.此时区可能与用户浏览器的时区不同.javascript应用程序始终知道用户选择的时区是什么.

我知道如何将UTC字符串转换为日期.我知道Javascript只代表当地时区的日期.

但是我遇到了麻烦,想知道如何显示为时区而不是用户的本地时区格式化的日期.它必须在所有日期考虑DST.在内部,我希望将所有日期作为UTC处理,并且仅在显示时转换为另一时区中日期的字符串表示.我需要在用户个人资料中选择的时区中显示日期,而不是浏览器的时区.

我已经尝试过服务器发送用户浏览器时区和用户配置文件时区之间的时区偏移差异(以毫秒为单位).但我发现我不能只发送一个偏移值,但需要为每个日期发送一个偏移量来解释夏令时的变化.

有关如何显示各种时区格式的日期的任何建议或示例代码?到目前为止我找到的选项:

  1. 服务器将日期作为已在正确时区格式化的字符串发送,并且不在客户端上进行日期解析或操作.这使得在客户端做某些事情很困难,如果不是不可能的话.
  2. 使用诸如https://github.com/mde/timezone-js之类的库,其中包括整个Olson TZ数据库到Javascript中.这意味着加载时间越长,内存使用量越多等.
  3. 使用发送到客户端的每个日期发送timezoneOffsetMillis值.这会导致混乱的JSON数据和非最佳REST接口.

有没有更简单或更好的解决方案?

javascript timezone datetime utc dst

22
推荐指数
1
解决办法
8482
查看次数

标签 统计

javascript ×3

timezone ×3

datetime ×1

dst ×1

utc ×1