Javascript JS时区-考虑输出时在不同时区的日期/时间

Javascript JS时区-考虑输出时在不同时区的日期/时间,javascript,datetime,momentjs,Javascript,Datetime,Momentjs,我知道这似乎是一个直截了当的问题,但尽管Moment.js和Moment timezone是获取/设置和格式化日期的非常强大的工具 将应用程序捕捉到单个时区时出现问题 我想要的是,用户可以从日期/时间选择器中进行选择,并以UTC格式将其作为unix时间戳发送。。但日期/时间选择器必须被视为BST 换句话说,即使您是从国外使用该网站,如果您是在英国选择的,您选择的日期/时间也应为UTC值 var local = moment(dateTime).unix(); var london = momen

我知道这似乎是一个直截了当的问题,但尽管Moment.js和Moment timezone是获取/设置和格式化日期的非常强大的工具

将应用程序捕捉到单个时区时出现问题

我想要的是,用户可以从日期/时间选择器中进行选择,并以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个变量将在同一台机器上等于相同的UTC时间戳,但在另一台运行在不同时区的机器上等于不同的时间戳

想想看。。。如果我的日期/时间是周六下午3点。。伦敦的UTC时间与柏林的UTC时间不同,因为柏林的UTC时间将提前一小时

如何强制将日期/时间视为特定时区


谢谢:-)

假设dateTime是ISO8601字符串,并且您希望该日期在任何时候都位于欧洲/伦敦时区,您需要的是:

moment.tz(dateTime, 'Europe/London').unix()
这将告诉moment将该时间解释为伦敦时间,前提是它没有指定的偏移量。如果它有偏移,它将从偏移时间转换为伦敦时间

所以,对我来说,在美国/芝加哥,你可以看到这样的效果:

//unix timestap in london time
moment.tz('2016-12-30', 'Europe/London').unix()
1483056000
//parse that timestamp back to my local time
moment.unix(1483056000).format()
"2016-12-29T18:00:00-06:00"
请记住,由于夏令时,伦敦有多个偏移。我想这就是你想要的

如果希望它始终保持+0的固定偏移量,则可以使用UTC:

moment.utc(dateTime)

假设dateTime是ISO8601字符串,并且您希望日期始终位于欧洲/伦敦时区,那么您需要的是:

moment.tz(dateTime, 'Europe/London').unix()
这将告诉moment将该时间解释为伦敦时间,前提是它没有指定的偏移量。如果它有偏移,它将从偏移时间转换为伦敦时间

所以,对我来说,在美国/芝加哥,你可以看到这样的效果:

//unix timestap in london time
moment.tz('2016-12-30', 'Europe/London').unix()
1483056000
//parse that timestamp back to my local time
moment.unix(1483056000).format()
"2016-12-29T18:00:00-06:00"
请记住,由于夏令时,伦敦有多个偏移。我想这就是你想要的

如果希望它始终保持+0的固定偏移量,则可以使用UTC:

moment.utc(dateTime)

你把术语搞混了。UTC在任何地方都是一样的。时区不变。当地时间会改变,但UTC不会改变。关于您提供的代码,您需要显示
dateTime
的示例值。是字符串、数组、日期对象、时刻对象等。^Matt在这里提出了一个很好的观点。请记住,unix时间点始终是UTC。我想你想要的是伦敦时间,而不是UTC。你把术语弄混了。UTC在任何地方都是一样的。时区不变。当地时间会改变,但UTC不会改变。关于您提供的代码,您需要显示
dateTime
的示例值。是字符串、数组、日期对象、时刻对象等。^Matt在这里提出了一个很好的观点。请记住,unix时间点始终是UTC。我想你想要的是伦敦时间,而不是UTC。你太棒了!我可能已经在网上找到了这个,但经过数小时的日期/时间搜索,大脑已经死掉了!我打算在矩时区网站上添加一些文档。这不是最直观的事情。谢谢你,玛吉。:)你太棒了!我可能已经在网上找到了这个,但经过数小时的日期/时间搜索,大脑已经死掉了!我打算在矩时区网站上添加一些文档。这不是最直观的事情。谢谢你,玛吉。:)