【问题标题】:Moment.js giving Incorrect Difference between 2 DatesMoment.js 给出两个日期之间的不正确差异
【发布时间】:2018-05-09 10:55:21
【问题描述】:

我在我的 React 应用程序中使用 moment.js 并使用以下代码来查找 2 个 unix 时间戳之间的差异:

import Moment from 'moment';

Moment.duration( 
    Moment(this.state.saleEndTime).diff(Moment(this.state.saleStartTime))
).humanize()

在哪里

  • this.state.saleStartTime1511638810(2017 年 11 月 25 日星期六 19:40:10 GMT)
  • this.state.saleEndTime1516909110(格林威治标准时间 2018 年 1 月 25 日星期四 19:38:30)

但是它给出了输出

an hour

这显然不正确,应该是2个月。我做错了什么?

将 moment v2.19.2 与节点 v7.9.0 一起使用


编辑:输出需要humanize'ed,this.state.saleStartTimethis.state.saleEndTime 之间的时间差可以从几分钟到几个月不等...

【问题讨论】:

  • 你不应该将一个单元传递给diff吗?
  • @Sag1v 如果 2 个 unix 时间戳可以相隔几分钟或几个月,我应该传递什么单位,并且输出应该是 humanize'ed?
  • @TheMintyMate 很抱歉造成混淆,它不是重复的。编辑过的问题,Sag1v 提供了解决方案。谢谢

标签: javascript reactjs momentjs


【解决方案1】:

我没有意识到这是unix 邮票。
那么你应该使用unix 方法:

moment.duration(
  moment.unix(1516909110).diff(moment.unix(1511638810))
).humanize();

运行 sn-p:

const result = moment.duration(
  moment.unix(1516909110).diff(moment.unix(1511638810))
).humanize();

const App = () => (
  <div >
    <div>{result}</div>
  </div>
);

ReactDOM.render(<App />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/moment@2.19.2/moment.js"></script>
<div id="root"></div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2017-12-27
    • 2012-04-18
    • 1970-01-01
    • 2022-11-21
    • 2011-05-31
    • 1970-01-01
    相关资源
    最近更新 更多