在 javascript 中将一个时区转换为另一个时区
Convert one timezone to another in javascript
我正在寻找一个接收时间、源时区的函数
和目的地
returns 目的地时区的时间
时区格式如下:
'utc'、'est'、'edt'、'gmt'、...
function convertTime(time,fromZone,toZone){
// do conversion
return convertedTime;
}
这里有一个很好的 Whosebug 过去 - post 关于这个一般主题:
How to initialize a JavaScript Date to a particular time zone
抱歉,由于以下几个原因,无法按照您描述的方式在时区之间进行转换:
许多时区缩写是不明确的。例如,CST
可以是中部标准时间、古巴标准时间或中国标准时间。 IST
可能是印度标准时间、以色列标准时间或爱尔兰夏令时。还有很多其他的例子。
并不是每个人都同意时区的缩写应该是什么。例如,在夏威夷,HST
和HAST
都是常用的。
并非所有时区缩写都是英文的。例如,HNE
和 HAE
是法国时区的缩写,用于加拿大东部时区。
并非所有时区 都有 我们认为的缩写。例如,哈萨克斯坦有两个时区。在该国西部,他们比 UTC 早 5 小时。在该国东部,他们比 UTC 早 6 小时。过去,说英语的人会在一些主要城市的名称之后分配一些虚构的缩写,例如 AQTT
或 ORAT
到西部,ALMT
到东部,但是 [=其中 76=] 实际使用过,但从未使用过。
假设EST
和EDT
是美国和加拿大观察到的东部标准时间和东部夏令时,你必须预先确定是否通过EST
或 EDT
到您的函数,具体取决于给定时间哪个有效。例如,如果您在今天 2013 年 3 月 13 日传递时间并使用 EST
,您将出错,因为 EDT
当前有效。这将适用于 fromZone
和 toZone
,并且每个都必须独立确定。
假设您尝试编写逻辑来解决前一点。如果两个不同的时区缩写同时应用于同一时区的不同部分,您仍然会遇到问题。例如,现在 MDT
适用于美国山区时区的大部分地区 - 除了大部分(但不是全部)亚利桑那州 MST
适用。
通过使用 IANA tz database 标识符(例如 America/New_York
,而不是缩写,考虑了上述所有因素以及更多因素。
我还建议查看以下资源:
- The timezone tag wiki 这里是 Stack Overflow
- Computerphile 的 YouTube 视频 The Problem with Time & Timezones
- 我博客上的文章Time Zone Abbreviations
我正在寻找一个接收时间、源时区的函数 和目的地 returns 目的地时区的时间
时区格式如下: 'utc'、'est'、'edt'、'gmt'、...
function convertTime(time,fromZone,toZone){
// do conversion
return convertedTime;
}
这里有一个很好的 Whosebug 过去 - post 关于这个一般主题:
How to initialize a JavaScript Date to a particular time zone
抱歉,由于以下几个原因,无法按照您描述的方式在时区之间进行转换:
许多时区缩写是不明确的。例如,
CST
可以是中部标准时间、古巴标准时间或中国标准时间。IST
可能是印度标准时间、以色列标准时间或爱尔兰夏令时。还有很多其他的例子。并不是每个人都同意时区的缩写应该是什么。例如,在夏威夷,
HST
和HAST
都是常用的。并非所有时区缩写都是英文的。例如,
HNE
和HAE
是法国时区的缩写,用于加拿大东部时区。并非所有时区 都有 我们认为的缩写。例如,哈萨克斯坦有两个时区。在该国西部,他们比 UTC 早 5 小时。在该国东部,他们比 UTC 早 6 小时。过去,说英语的人会在一些主要城市的名称之后分配一些虚构的缩写,例如
AQTT
或ORAT
到西部,ALMT
到东部,但是 [=其中 76=] 实际使用过,但从未使用过。假设
EST
和EDT
是美国和加拿大观察到的东部标准时间和东部夏令时,你必须预先确定是否通过EST
或EDT
到您的函数,具体取决于给定时间哪个有效。例如,如果您在今天 2013 年 3 月 13 日传递时间并使用EST
,您将出错,因为EDT
当前有效。这将适用于fromZone
和toZone
,并且每个都必须独立确定。假设您尝试编写逻辑来解决前一点。如果两个不同的时区缩写同时应用于同一时区的不同部分,您仍然会遇到问题。例如,现在
MDT
适用于美国山区时区的大部分地区 - 除了大部分(但不是全部)亚利桑那州MST
适用。
通过使用 IANA tz database 标识符(例如 America/New_York
,而不是缩写,考虑了上述所有因素以及更多因素。
我还建议查看以下资源:
- The timezone tag wiki 这里是 Stack Overflow
- Computerphile 的 YouTube 视频 The Problem with Time & Timezones
- 我博客上的文章Time Zone Abbreviations