我知道这似乎是一个直截了当的问题 - 但是虽然Moment.js和时刻时区是获取/设置和格式化日期的非常强大的工具..
我有一个问题将我的应用程序复制到一个时区 .
我想要的是,用户可以从日期/时间选择器中进行选择 - 并将其作为UTC中的unix时间戳发送..但是日期/时间选择器必须被视为BST .
换句话说,即使您在国外使用该网站 - 您选择的日期/时间应该是您在英国选择的UTC值 .
var local = moment(dateTime).unix();
var london = moment(dateTime).tz('Europe/London').unix();
var berlin = moment(dateTime).tz('Europe/Berlin').unix();
所有3个变量将等于同一台计算机上的SAME UTC时间戳,但在另一台运行在不同时区的计算机上的时间戳不同 .
考虑一下......如果我的日期/时间是星期六下午3点......这是伦敦的一个不同于UTC的UTC,因为它将在柏林提前一小时发生 .
如何强制将日期/时间视为特定时区?
谢谢 :-)
1 回答
假设dateTime是一个ISO8601字符串,并且您希望日期始终位于欧洲/伦敦时区,您只需要:
这告诉我们将该时间解释为伦敦时间,前提是它没有指定的偏移量 . 如果它有偏移量,它将从偏移时间转换为伦敦时间 .
那么,对于我在美国/芝加哥,你可以看到这个效果:
请记住,由于夏令时,伦敦有多个抵消 . 我想这就是你想要的 .
如果您希望它始终保持固定偏移量0,那么您可以使用UTC: