假设美国加利福尼亚州的用户选择了日期、时间和时区:
全球啤酒马拉松将于 2013 年 8 月15 日上午 10:00,UTC-08:00开始
中欧的另一位用户打开显示此日期和时间的页面。他不想计算时间(啤酒已经很少了)。他只想看到这个日期和时间:
2013 年 8 月 15 日 19:00
鉴于浏览器接收到加利福尼亚州用户输入的日期和时间信息:
有没有办法在没有外部网络服务的情况下在 javascript中进行正确的转换?也就是说,要检测到 UTC-08:00 上午 10 点实际上应该是 UTC-07:00 上午 10 点,因为它是夏令时。
也许我一开始就理解错了,但我不想让进入的用户思考他应该选择UTC-08:00(PST)还是UTC-07:00(PDT)。我假设由于 CA 的标准时区是 PST,因此人们不会在夏季转向思考 PDT。还是他们?!
在中欧,标准日期为 UTC+01:00,夏令时日期为 UTC+02:00。因此,CA 和欧洲之间的差异应该是 9 小时,一年中的两个时段除外,当一个或另一个区域在标准和夏令时模式之间切换时。
更新:
经过更多思考和阅读评论后,我最理想的需要是:
var utcOffset = f('2013-08-15T10:00', 'America/Los_Angeles');
// utcOffset == "-07:00"
var utcOffset = f('2013-11-15T10:00', 'America/Los_Angeles');
// utcOffset == "-08:00"
到目前为止,Guido Preite 建议的moment.js/timezone 插件似乎能够做到这一点(或多或少)。
任何其他方式,使用浏览器API?