Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript处理日期_Javascript_Date - Fatal编程技术网

使用javascript处理日期

使用javascript处理日期,javascript,date,Javascript,Date,我正在开发一个应用程序,需要找出用户输入表单的日期与当前日期之间的差异。现在用我的代码,当我输入当前日期时,它总是显示2的差异。如果您能给我一些建议,我将不胜感激 function compareDates(dueDate) { //dueDate is the value from the form var cdate = new Date(); var cdateparse = Date.parse(cdate); var dueDateparse = Date.parse(dueDate

我正在开发一个应用程序,需要找出用户输入表单的日期与当前日期之间的差异。现在用我的代码,当我输入当前日期时,它总是显示2的差异。如果您能给我一些建议,我将不胜感激

function compareDates(dueDate) {  //dueDate is the value from the form
var cdate = new Date();
var cdateparse = Date.parse(cdate);
var dueDateparse = Date.parse(dueDate);
var diff = dueDateparse - cdateparse;
var daysCal = diff / 1000 / 60 / 60 / 24;
var days = Math.floor(daysCal);
console.log(days);  //keeps returning -2 when I enter the current date into the form
try {
 if(diff < 0) {
 mymessage = "this task is overdue by" + " " + -days + " " + "days"; //shows 2 
  throw new Error("you are overdue");
  }
  }
 catch(ex) {
 alert(ex.message);
 return;
 }
if(diff > 0) {
console.log("the difference is greater than 0");
mymessage = "you have" + " " + days + " " + "more days";
}
}
函数compareDates(dueDate){//dueDate是表单中的值
var cdate=新日期();
var cdateparse=Date.parse(cdate);
var dueDateparse=Date.parse(dueDate);
var diff=dueDateparse-cdateparse;
var daysCal=diff/1000/60/60/24;
var天数=数学下限(daysCal);
console.log(days);//在表单中输入当前日期时一直返回-2
试一试{
如果(差异<0){
mymessage=“此任务过期了”+“”++-days++“days”//显示2
抛出新错误(“您已过期”);
}
}
捕获(ex){
警报(例如消息);
返回;
}
如果(差异>0){
console.log(“差值大于0”);
mymessage=“您有“+”+天+”+“更多天”;
}
}
我会使用该库为您处理它,它有一个内置API,使用方式如下:

var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
a.diff(b, 'days') // 1

在应用Math.floor()之前,必须对daysCal值进行四舍五入


首先,要获取当前日期,您应该使用
date.now()
,而不是
+new date
。它支持浏览器的速度更快,不过:




我建议使用moment.js作为。我正在制作一个web应用程序,使用moment.js。他们的相对日期方法返回易于阅读的格式,如“几秒钟前”、“四年前”等。超级简单

当我尝试两天以后的日期时,它会说“我还有0天”你能给出一个你在表单中输入日期的示例字符串吗?请给我们一个dueDate的示例输入这是我一直在使用的2013-03-18谢谢,但我不能。我这样做是为了分配任务,必须使用javascript。
.....

var days = Math.floor(Math.round(daysCal));
.....
Date.now = Date.now || function() {
    return +new Date;
};
moment(someDate).fromNow()