【问题标题】:calculate difference between two times in moment js [duplicate]计算时刻js中两次之间的差异[重复]
【发布时间】:2018-11-29 06:01:01
【问题描述】:

我正在用 node js 编写一个服务。我已经将 moment js 用于与时间相关的解决方案。 我想计算两次之间的时间差。这是我的 sn-p,它没有给我想要的输出:

var now = moment('11:08:30',"H:mm:ss");
var prev = moment('11:07:30', "H:mm:ss");
var result = moment(now.diff(prev)).format("H:mm:ss");
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.4.0/moment.min.js"></script>

根据我的理解,我认为 11:08:3011:07:30 之间的差异应该是 00:01:00,但输出是 5:31:00。我不明白为什么会这样。如何修复它以使输出为 00:01:00 即 1 分钟?

【问题讨论】:

  • now.diff(prev) 返回以毫秒为单位的差异,在您的情况下为 60000。使用 moment(60000) 创建一个日期 60000 自 1970 年 1 月 1 日 UTC 以来的毫秒数。如果您现在调用.format("H:mm:ss"),那么H 将受到系统时区的影响。因此,您需要确保在格式化时使用 utc。
  • 所以只需将moment(now.diff(prev)).format("H:mm:ss") 更改为moment.utc(now.diff(prev)).format("H:mm:ss"),如answer 中所述,您将获得输出0:01:00
  • 嘿,非常感谢,这真的解决了问题:)

标签: javascript node.js datetime momentjs


【解决方案1】:

这是一个工作示例,

var now = moment('11:08:30',"H:mm:ss");
var prev = moment('11:07:30', "H:mm:ss");

 function dateDifference(startDate, endDate){
        return moment(startDate).diff(moment(endDate), 'seconds');
    }
    console.log(this.dateDifference(now,prev))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.4.0/moment.min.js"></script>

支持的度量是年、月、周、日、小时、 分钟和秒。为了便于开发,单数形式是 从 2.0.0 开始支持。毫秒以外的测量单位 在 1.1.1 版本中可用。


现在,一旦您在几秒钟内得到答案,请点击此链接将秒数转换为您想要的格式 'h:mm:ss'

format seconds into 'hh:mm:ss'

【讨论】:

  • 控制台报错
  • "Uncaught SyntaxError: Unexpected token :"
  • 如果你发布了一个 sn-p 然后检查它是否真的运行。问题是关于 javascript 而不是 TypeScript。
  • 已更新代码请再次查看。工作正常,如果你有任何疑问,请告诉我
  • OP 询问如何更正代码,使其为00:01:00 而不是01:01:00,您的代码输出1
猜你喜欢
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
  • 2015-06-27
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
相关资源
最近更新 更多