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