日期正在考虑每月31天

时间:2013-03-15 11:47:14

标签: javascript datetime

在处理日期差异时,当我使用下面的代码时,某种功能假设所有月份都有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);

}

3 个答案:

答案 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);