在处理日期差异时,当我使用下面的代码时,某种功能假设所有月份都有31天。对于前者如果我在2月28日减去01年3月,那么差异就会变为4天。有没有简单的方法可以解决这个问题。任何帮助将不胜感激。
function myFunction()
{
var sysdt = "02/28/2013";
var year = sysdt.substring(6,10);
var mon = sysdt.substring(0,2);
var date = sysdt.substring(3,5);
var n = Date.UTC(year,mon,date);
var userdt = "03/01/2013"
var yr = userdt.substring(6,10);
var mn = userdt.substring(0,2);
var dd = userdt.substring(3,5);
var n1 = Date.UTC(yr,mn,dd);
var x = document.getElementById("demo");
x.innerHTML=(n1-n)/(1000*24*60*60);
}
答案 0 :(得分:0)
这将为您提供两个日期之间的差异,以毫秒为单位
var diff = Math.abs(date1 - date2);
例如,它是
var diff = Math.abs(new Date() - compareDate);
您需要确保compareDate是一个有效的Date对象。
这样的事可能对你有用
var diff = Math.abs(new Date() - new Date(dateStr.replace(/-/g,'/')));
即。将“2011-02-07 15:13:06”转换为新日期('2011/02/07 15:13:06'),这是Date构造函数可以理解的格式。
U可以这样减去 -
var d1 = new Date(); //"now"
var d2 = new Date("2011/02/01") // some date
var diff = Math.abs(d1-d2); // difference in milliseconds
var days = diff*24*60*60*1000;
答案 1 :(得分:0)
您的代码实际上是从4月1日减去3月1日,因为JavaScript日期中的月份是从0开始的。
答案 2 :(得分:0)
var sysdt = "02/28/2013";
var date1 = new Date(sysdt);
var userdt = "03/01/2013"
var date2 = new Date(userdt);
var days = (date2-date1)/(1000*24*60*60);
或在代码中从月中减去1
var sysdt = "02/28/2013";
var year = sysdt.substring(6,10);
var mon = sysdt.substring(0,2)-1; // months are from 0 to 11
var date = sysdt.substring(3,5);
var n = Date.UTC(year,mon,date);
var userdt = "03/01/2013"
var yr = userdt.substring(6,10);
var mn = userdt.substring(0,2)-1; // months are from 0 to 11
var dd = userdt.substring(3,5);
var n1 = Date.UTC(yr,mn,dd);
var days = (n1-n)/(1000*24*60*60);