获取两个日期之间的天数

Get days between two Dates

本文关键字:之间 日期 两个 获取      更新时间:2024-02-17
Function countdays(){

var oneday = 24*60*60*1000;
var sd = $('#sdate').val();// Start date from DOM element type input text(DD/MM/YYYY)
var start_date = new Date(sd);
var ed = $('#edate').val();// End date from DOM element type input text(DD/MM/YYYY)
var end_date = new Date(ed);

var days = Math.floor((start_date.getTime() - end_date.getTime())/(oneday));
alert(days);
}

我正在尝试运行这个函数,当我将日期设置为开始日期和结束日期的格式为 DD/MM/YYYY 时,JavaScript 采用 MM/DD/YYYY。

有什么方法可以将我的日期格式保持为 DD/MM/YYYY 并获得开始日期和结束日期之间的差异

切勿使用 new Date(string),因为它取决于用户的区域设置。

您应该将日期字符串分解为年,月和日,然后调用new Date(year, month - 1, day)

您正确地使用getTime来查找天数。

我可以在JavaScript中操作DateTimes时为MomentJS做一个宣传吗? 原始日期对象有很多极端情况。 如果你使用MomentJS,你可以使用差分方法。

var start_date = moment(sd);
var end_date = moment(ed);
var days = end_date.diff(start_date, "days");
console.log(days); // should be the integer you want to test

使用 MomentJS 的额外好处是,当您在 3 个月后回到逻辑时,代码是可读的,它允许您针对时区等奇怪的事情进行调整。

尝试自己处理日期格式。

function parseDate(str) {
    var d = str.split('/')
    return new Date(parseInt(d[2]),parseInt(d[1]) - 1, parseInt(d[0]));
}
function countdays(){
var oneday = 24*60*60*1000;
var start_date = parseDate($('#sdate').val());
var end_date = parseDate($('#edate').val());

var days = Math.floor((start_date.getTime() - end_date.getTime())/(oneday));
alert(days);
}