【问题标题】:How i get days accurately in Moment.js我如何在 Moment.js 中准确获取天数
【发布时间】:2018-06-07 23:54:17
【问题描述】:

这是我获取与给定日期相差天数的代码。 我需要准确的日子,这里我的正确日子不同的是'2' 但我得到1。 我正在使用 moment.js 进行角度操作。这不是花时间。 我需要时间来获得结果。 我在日历中使用此代码,所以我也需要花时间。

var startdate=new Date('2017-12-30 06:00:00');
var enddate=new Date('2018-01-01 01:00:00');

var diff=  moment(enddate).diff(startdate, "days");
console.log(diff)

【问题讨论】:

标签: javascript angularjs momentjs


【解决方案1】:

尝试使用startOf,删除两个日期的时间部分。

moment(enddate).startOf('day').diff(moment(startdate).startOf('day'), 'days');

【讨论】:

  • 把这个改成 => moment(enddate).startOf('day').diff(moment(startdate).startOf('day'), 'days');
  • @SurjeetBhadauriya 是的,你必须适应你的情况。我编辑了答案
  • 很好@Soulbe。 :)
【解决方案2】:

Difference 1.0.0+

...
默认情况下,moment#diff 会将结果截断到零位小数,返回一个整数。 如果您需要浮点数,请将true 作为第三个参数传递。在 2.0.0 之前,moment#diff 返回一个四舍五入到最接近整数的数字,而不是截断的数字。

var startdate = new Date('2017-12-30 06:00:00');
var enddate = new Date('2018-01-01 01:00:00');

var diff = moment(enddate).diff(startdate, "days", true);

console.log(diff);            // 1.7916666666666667
console.log(Math.ceil(diff)); // 2
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>

【讨论】:

    【解决方案3】:

    试试这个普通的 JS 解决方案

    var numberOfDays = Math.ceil( ( enddate.getTime() - startdate.getTime() ) 
                         / ( 1000*60*60*24 ));
    

    演示

    var startdate=new Date('2017-12-30 06:00:00');
    var enddate=new Date('2018-01-01 01:00:00');
    var numberOfDays = Math.ceil( ( enddate.getTime() - startdate.getTime() ) 
                         / ( 1000*60*60*24 ));
    console.log( numberOfDays );

    【讨论】:

      【解决方案4】:

      var startdate=new Date('2017-12-30 06:00:00');
      var enddate=new Date('2018-01-01 01:00:00');
      console.log( moment(enddate).diff(startdate, 'days'))
      console.log( moment(enddate).diff(startdate, 'weeks'))
      console.log( moment(enddate).diff(startdate, 'hours')) 
      console.log( moment(enddate).diff(startdate, 'minutes'))
      <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>

      【讨论】:

      • TO 已经在使用.diff(..., 'days'),但是“这里我的正确日期不同的是'2',但我得到的是1”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-03
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多