使用JavaScript计算到特定日期的剩余天数
我试图计算到某个特定日期的剩余天数。我知道有一百万种不同的方法和教程,但我想自己写一段代码。问题是函数的输出是“NaN”。我非常感谢你的帮助 这是我的代码:使用JavaScript计算到特定日期的剩余天数,javascript,date,days,Javascript,Date,Days,我试图计算到某个特定日期的剩余天数。我知道有一百万种不同的方法和教程,但我想自己写一段代码。问题是函数的输出是“NaN”。我非常感谢你的帮助 这是我的代码: var daysLeft = function(input) { var num = ''; var date = []; var x = 0; for (i = 0; i < input.length; i++) { if (!isNaN(input.charAt(i))) {
var daysLeft = function(input) {
var num = '';
var date = [];
var x = 0;
for (i = 0; i < input.length; i++) {
if (!isNaN(input.charAt(i))) {
num += input.charAt(i);
}
else {
date[x] = parseInt(num, 10);
x++;
}
}
var inputDate = new Date(date[2], date[1], date[0]);
var today = new Date();
var timeDiff = Math.abs(inputDate.getTime() - today.getTime());
return Math.ceil(timeDiff / (1000*3600*24));
};
daysLeft("11.12.2014");
var daysLeft=函数(输入){
var num='';
var日期=[];
var x=0;
对于(i=0;i
顺便说一句:我写了这段代码,因为Date()函数使用的是美国格式的日期(MM/dd/YYYY),而不是UTC日期。我也知道有Date.UTC()函数,但无论如何。我只想自己扭转数月和数天的局面。当你解析
num
设置date[x]
时,你需要将num
重置为'
你可以考虑在句点中分离你的输入。
你应该使用这样的东西:
var daysLeft = function(input) {
var num = '';
var date = [];
var x = 0;
for (i = 0; i < input.length; i++) {
if (!isNaN(input.charAt(i))) {
num += input.charAt(i);
}
else {
date[x] = parseInt(num, 10);
x++;
num='';
}
}
date[x] = parseInt(num, 10);
var inputDate = new Date(date[2], date[1], date[0]);
var today = new Date();
var timeDiff = Math.abs(inputDate.getTime() - today.getTime());
return Math.ceil(timeDiff / (1000*3600*24));
};
daysLeft("11.12.2014");
var daysLeft=函数(输入){
var num='';
var日期=[];
var x=0;
对于(i=0;i
我的解决方案是:
function isNumeric(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
var daysLeft = function(input) {
var num = '';
var date = [];
var x = 0;
for (i = 0; i < input.length; i++) {
if (!isNaN(input.charAt(i)) && isNumeric(input.charAt(i))) {
num += input.charAt(i);
}
else {
date[x] = parseInt(num, 10);
x++;
num = '';
}
}
date[x] = parseInt(num, 10);
var inputDate = new Date(date[2], date[1], date[0]);
var today = new Date();
var timeDiff = Math.abs(inputDate.getTime() - today.getTime());
return Math.ceil(timeDiff / (1000*3600*24));
};
插入控制台日志(日期);'在for`循环并在此输出后,输出为1101,输入为“01.01.2015”
function isNumeric(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
var daysLeft = function(input) {
var num = '';
var date = [];
var x = 0;
for (i = 0; i < input.length; i++) {
if (!isNaN(input.charAt(i)) && isNumeric(input.charAt(i))) {
num += input.charAt(i);
}
else {
date[x] = parseInt(num, 10);
x++;
num = '';
}
}
date[x] = parseInt(num, 10);
var inputDate = new Date(date[2], date[1], date[0]);
var today = new Date();
var timeDiff = Math.abs(inputDate.getTime() - today.getTime());
return Math.ceil(timeDiff / (1000*3600*24));
};
function parseDate(input) {
var parts = input.split('-');
// new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]])
return new Date(parts[0], parts[1]-1, parts[2]); // Note: months are 0-based
}
var daysLeft = function(input) {
var inputDate = parseDate(input);
var today = new Date();
var timeDiff = Math.abs(inputDate.getTime() - today.getTime());
return Math.ceil(timeDiff / (1000*3600*24));
};