我有两个输入日期从日期选择器控件。我选择了开始日期2/2/2012和结束日期2/7/2012。我为此写了以下代码。

结果应该是6,但我得到了5。

function SetDays(invoker) {   
    var start = $find('<%=StartWebDatePicker.ClientID%>').get_value();
    var end = $find('<%=EndWebDatePicker.ClientID%>').get_value();

    var oneDay=1000 * 60 * 60 * 24;
    var difference_ms = Math.abs(end.getTime() - start.getTime())
    var diffValue = Math.round(difference_ms / oneDay);
}

有人能告诉我怎样才能得到确切的差别吗?


当前回答

我使用Moment.js在ES6中创建了一个快速可重用的函数。

const getDaysDiff = (start_date, end_date, date_format = 'YYYY-MM-DD') => { const getDateAsArray = (date) => { return moment(date.split(/\D+/), date_format); } return getDateAsArray(end_date).diff(getDateAsArray(start_date), 'days') + 1; } console.log(getDaysDiff('2019-10-01', '2019-10-30')); console.log(getDaysDiff('2019/10/01', '2019/10/30')); console.log(getDaysDiff('2019.10-01', '2019.10 30')); console.log(getDaysDiff('2019 10 01', '2019 10 30')); console.log(getDaysDiff('+++++2019!!/###10/$$01', '2019-10-30')); console.log(getDaysDiff('2019-10-01-2019', '2019-10-30')); console.log(getDaysDiff('10-01-2019', '10-30-2019', 'MM-DD-YYYY')); console.log(getDaysDiff('10-01-2019', '10-30-2019')); console.log(getDaysDiff('10-01-2019', '2019-10-30', 'MM-DD-YYYY')); <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js"></script>

其他回答

你也可以使用这段代码:moment("yourDateHere", "YYYY-MM-DD"). fromnow()。这将计算今天与您提供的日期之间的差额。

我使用Moment.js在ES6中创建了一个快速可重用的函数。

const getDaysDiff = (start_date, end_date, date_format = 'YYYY-MM-DD') => { const getDateAsArray = (date) => { return moment(date.split(/\D+/), date_format); } return getDateAsArray(end_date).diff(getDateAsArray(start_date), 'days') + 1; } console.log(getDaysDiff('2019-10-01', '2019-10-30')); console.log(getDaysDiff('2019/10/01', '2019/10/30')); console.log(getDaysDiff('2019.10-01', '2019.10 30')); console.log(getDaysDiff('2019 10 01', '2019 10 30')); console.log(getDaysDiff('+++++2019!!/###10/$$01', '2019-10-30')); console.log(getDaysDiff('2019-10-01-2019', '2019-10-30')); console.log(getDaysDiff('10-01-2019', '10-30-2019', 'MM-DD-YYYY')); console.log(getDaysDiff('10-01-2019', '10-30-2019')); console.log(getDaysDiff('10-01-2019', '2019-10-30', 'MM-DD-YYYY')); <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js"></script>

// today
const date = new Date();

// tomorrow
const nextDay = new Date(new Date().getTime() + 24 * 60 * 60 * 1000);

// Difference in time
const Difference_In_Time = nextDay.getTime() - date.getTime();

// Difference in Days 
const Difference_In_Days = Difference_In_Time / (1000 * 3600 * 24);

这对我来说很管用:

从= '2019-01-01'; “2019-01-08”; Math . abs ( 当时(从”、“YYYY-MM-DD”) startOf(“day”) diff(当时(to, YYYY-MM-DD) startOf ' day)”、“天”) ) + 1 );

使用moment.js(它很容易在javascript中计算日期操作)

firstDate。diff(secondDate, 'days', false);// true|分数值为false

结果将以整数形式给出天数。