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_Days - Fatal编程技术网

使用JavaScript计算到特定日期的剩余天数

使用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))) {

我试图计算到某个特定日期的剩余天数。我知道有一百万种不同的方法和教程,但我想自己写一段代码。问题是函数的输出是“NaN”。我非常感谢你的帮助

这是我的代码:

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));
};