获得两个日期之间的日子

时间:2013-12-04 06:34:44

标签: javascript

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并在开始日期和结束日期之间取得差异

3 个答案:

答案 0 :(得分:1)

永远不要使用new Date(string),因为它取决于用户的区域设置。

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

您使用getTime查找天数是正确的。

答案 1 :(得分:1)

在JavaScript中操作DateTimes时,我可以为MomentJS做一个推销吗?原始日期对象有很多极端情况。如果您使用MomentJS,则可以使用difference方法。

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个月回到逻辑时,代码是可读的,并且它允许你调整奇怪的事情,如时区。

答案 2 :(得分:0)

尝试自己处理日期格式。

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);
}