0

在处理日期差异时,当我以某种方式使用下面的代码时,函数假设所有月份都有 31 天。例如。如果我用 2 月 28 日减去 3 月 1 日,则差值为 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);

}
4

3 回答 3

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'),这是日期构造函数可以理解的格式。

你可以像这样减去——

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;
于 2013-03-15T11:53:16.603 回答
0

您的代码实际上是从 4 月 1 日减去 3 月 1 日,因为 JavaScript 日期中的月份是从 0 开始的。

于 2013-03-15T11:56:08.657 回答
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);
于 2013-03-15T12:11:10.707 回答