我正在尝试显示某事的持续时间标记。开始时间始终为伦敦时间。它非常适合英格兰/同一时区的人们,但是当其他时区的人们查看持续时间时,它会显示错误的值(如果您位于英格兰后面的时区 => 负值/太小值,则时区提前 = > 值太大)。
我对此的解决方案是使用时刻时区。我正确添加了时刻时区数据我试图使用这个时区数据(代码简化并分成单独的行以便于阅读):
let londonTimeNow = moment().tz('Europe/London'),
jobStartTime = moment(job.start, 'DD/MM/YYYY HH:mm:ss'),
diff = londonTimeNow.diff(jobStartTime);
duration = moment.duration(diff).format('HH:mm:ss', {trim: false});
我希望这将获得伦敦的当前时间,并与开始时间进行比较,无论您身在何处。但是,该diff
功能似乎将时间转换为用户的计算机时间。我尝试将 格式化londonTimeNow
为字符串,但是 diff 函数不起作用。请注意,我已经调试过并且moment().tz()
工作正常,我尝试过使用其他时区,它在指定的区域中获得了正确的时间。
有任何想法吗?
编辑: 似乎我可以通过手动将'londonTimeNow'的偏移属性设置为0来使其工作。但这对我来说感觉不太正确。我更喜欢看起来不像黑客的解决方案。