2016-08-22 44 views
0
我使用moment.js与时区创建属于特定时区中的日期时间

使用MomentJS偏移:如何显示日期时间考虑与时区

var datetime = moment.tz("2016-08-16 21:51:28","Europe/London"); 

因为这种构造是知道的DST(夏令时),moment.js会自动添加+1小时偏移量。 datetime.format()将显示:2016-08-16T21:51:28+01:00

但是,似乎打印日期时,未考虑该偏移量。例如。 datetime.format('DD.MM.YYYY - HH:mm:ss')将显示:16.08.2016 - 21:51:28但我不想显示:16.08.2016 - 22:51:28(考虑1小时的DST偏移的时间)。有谁知道如何做到这一点?

+0

看到这个小提琴。 http://jsfiddle.net/pe1gtbgj/另外。该文档可能有助于http://momentjs.com/guides/#/lib-concepts/date-time-math/ –

回答

2

你错误地解释了你得到的输出。

当您在ISO8601时间戳的末尾看到+01:00时,并不意味着您需要添加一小时。这意味着给定的时间戳是在UTC时间前一小时的本地时区。时刻不会增加一个小时。它仅仅反映了伦敦的当地时间。

对于您提供的时间戳,显示22:51:28将是一个错误。伦敦当地时间为21:51:28,等效的UTC时间为20:51:28。直到您在UTC + 2去东部一个时区之前,您才会找到22:51:28。现在

,如果你什么意思做的是从UTC转换到伦敦的时候,那么你需要创建输入为UTC,然后再转换。

moment.utc("2016-08-16 21:51:28").tz("Europe/London") 

然后格式化时,这是你要的结果,你会得到22:51:28,但是这是一个时间不同点。

相关问题