javascript - 使用 moment 和 moment 时区正确实现 diff

标签 javascript momentjs

尝试使用时刻的 diff 函数来计算一个时刻的时间差,该时刻始终具有恒定的时区,而另一个时刻则具有不同的时区。我正在使用时刻时区来帮助解决这个问题。

这是我的示例代码:

const parisTime   = moment({hour:18, minutes:0}).tz('Europe/Paris');
const currentTime = moment(); //right now
const difference  = moment.duration(parisTime.diff(currentTime))

当我执行此操作时, diff 将当前时间视为与欧洲/巴黎相同的时区,这是行不通的,因为当前时间可能来自世界任何地方。

有什么想法可以解决这个问题吗? 非常感谢您的帮助 - 正确答案将被标记为如此。

谢谢!

最佳答案

我认为您想要计算巴黎时间今天 18:00 与现在之间的差异。那将是

moment.tz('18:00', 'HH:mm', 'Europe/Paris').diff(moment());

基本上,您需要将 18:00 解析为巴黎时间。现在发生的情况是,您将其解析为本地时间,然后将其转换为巴黎时间。

请注意,由于您没有指定日期,因此该天被假定为“今天”,这意味着此代码可能会产生正值和负值。

参见this blog post有关 moment 的构造函数如何工作的更多信息。

关于javascript - 使用 moment 和 moment 时区正确实现 diff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38409678/

相关文章:

javascript - 无法使用 Sequelize 更新(或保存)现有行

javascript - ExtJS中 bool 字段排序选择什么方向类型?

javascript - encodeUriSegment 不是函数

javascript - 将 <div> 的背景颜色设置为里面的十六进制文本

javascript - Angular Moment - 使用自定义语言环境对象更改语言环境

javascript - Moment.js 的 Heroku 时区问题

javascript - 在 DateRangePicker 中将 minDate 设置为当前日期

javascript - 使用 Moment JS 解析序数时的莫名其妙行为。漏洞?

javascript - Moment js 在警报中显示错误的日期

javascript - requirejs - 将多个文件合并为不依赖于 requirejs 的单个 js 文件