javascript时区转换器
javascript timezone converter
我需要一种方法来将未来的时间转换为不同的时区,而不依赖于用户的计算机时间。
在注册时,用户提供自己的时区。当他登录时,我计算UTC时间和他的时间之间的偏移量(以分钟为单位),并将该偏移量注入页面,以便javascript函数可以进行转换。类似这样的东西:
var TheUTCTime = new Date(UserTime.getTime() - TimeZoneOffsetInMinutes * 60000);
另一种方式是这样的:
var TheUserTime = new Date(UTCTime.getTime() + TimeZoneOffsetInMinutes * 60000);
只要偏移量不变,就可以很好地转换时间。例如,由于夏令时,美国东部时间和UTC之间的时间间隔为300分钟或360分钟,具体取决于一年中的月份。
我的功能可以很好地转换今天的日期,但我希望能1)在一年中的任何一天都能做同样的事情,2)不依赖于用户的内部时钟或时区。
我怎么能这么做?
谢谢。
我的功能可以很好地转换今天的日期,但我希望能1)在一年中的任何一天都能做同样的事情,2)不依赖于用户的内部时钟或时区。
如果您想将另一个UTC时间转换为用户的本地时间,必须知道他们的时区。这几乎就是时区的定义:UTC和当地时间之间的映射(或者等效地,UTC和与当地时间的偏移量之间的映射)。
正如您所看到的,仅仅获得当前偏移量是不够的,因为夏令时转换(以及时区的任何其他变化——它们的变化比您预期的要大)。
基本上没有办法绕过这一点:必须询问用户的时区。您可以根据UTC的当前偏移量,并可能对其IP地址进行地理编码,做出一个很好的猜测,但您必须与他们确认。(例如,他们可能正在旅行或其他什么,而不在"家"时区。)
为了不依赖于用户的时钟时区,我认为最好的方法是在server side
中进行转换。
SO中有一个很好的问题,涉及夏令时和javascript日期对象:夏令时和时区最佳实践
相关文章:
- 带时区的Javascript Datestring转换器
- 带Js的货币转换器
- Ajax调用OGRE转换器
- JavaScript中的温度转换器(IF ELSE条件)
- PDF到JPG的转换器
- 数据互绑定问题:转换器只运行一次,无法绑定元素的 ID
- 货币转换器未转换
- 显示Aurelia值转换器上的所有过滤器
- AngularJS希伯来文日期转换器
- 带有JSONp的货币转换器
- JS或C#中的货币转换器
- 设置money.js(用于货币转换器)时出现问题
- 创建/使用简单的美制到公制转换器的问题.(HTML/JavaScript)函数未启动
- Backbone.js的Backbone.Modelbinding插件中是否有绑定的转换器参数
- Clojure到JavaScript转换器(Leiningen)
- 如何为温度转换器编写简单的javascript代码.
- JavaScript日期转换器
- ASCII到键码转换器
- 时区转换器,包括夏令时
- javascript时区转换器