2015-12-22 100 views
0

我在JavaScript中日期掙扎。我要比較一些日期輸入,但用戶和用戶輸入的日期取決於哪個列表信息。我的問題是比較系統日期和日期選擇器日期。系統日期顯示的格式爲'Tue Dec 22 2015 00:00:00 GMT + 0000(GMT)'日期選擇器顯示22/12/2015。我如何更改系統日期以匹配日期選擇器格式,以便我可以比較日期?我想沒有jQuery(我知道日期選擇器違背了這一點)。需要比較新的日期和日期選擇器

這裏我的代碼到目前爲止的日期基本上只是設置時間爲00:00:00。

var today = new Date(); 
today.setHours(0,0,0,0); 

var yesterday = new Date(); 
yesterday.setDate(yesterday.getDate() - 1); 
yesterday.setHours(0,0,0,0); 

var tomorrow = new Date(); 
tomorrow.setDate(tomorrow.getDate() + 1); 
tomorrow.setHours(0,0,0,0); 

console.log(today); 


var dateTask = document.getElementById("date").value; 

    console.log(dateTask); 

回答

1

您必須將用戶輸入解析爲Date對象。 22/12/2015不是Date構造函數的有效日期字符串,因此您必須自己解析它。 你可以做這樣的事情:

var dateSplit= document.getElementById("date").value.split('/'), 
    dateTask = new Date(dateSplit[2],dateSplit[1]-1,dateSplit[0], 0, 0, 0, 0); 

注:此代碼是非常基本的,需要當你真正分析用戶輸入的增強。

之後,你可以比較的日期是這樣的:

today.getTime() === dateTask.getTime() 
+0

謝謝你幫我得到的結果我想要的。我必須改變dateSplits,因爲它是從日期選擇器中以美國日期格式。你在底部的意思是什麼意思?它需要什麼增強?如果你可以詳細介紹一下,我可以從那裏閱讀它。 'var dateSplit = document.getElementById(「date」)。value.split('/'), dateTask = new Date(dateSplit [2],dateSplit [0] -1,dateSplit [1],0,0 ,0,0);' – monkeyman905

+0

@ monkeyman905如果用戶輸入'09/04',你將只有2個數組項,上面的代碼會因爲沒有定義'dateSplit [2]'而出錯。你必須決定你從用戶輸入中獲得什麼。順便說一句你的問題包括這個日期:'22/12/2015',所以我假設第一部分是當天,而不是這個月:) – A1rPun

+0

是完全我的壞,我直到後來才意識到。直到我使用'if(today.getTime()=== dateTask.getTime())'這是正常的嗎?不應該今天=== dateTask'返回true? – monkeyman905

0

你實際上並不需要JQuery的,如果你想有一個日期選擇器,但是這不是重點。我認爲最好的方法是使用Date.parse解析用戶輸入的日期。然後您可以將它們作爲unix epoch timestamps進行比較。

"use strict"; 
 
var datePicker = document.querySelector('#date'); 
 
datePicker.addEventListener('change',function(){ 
 

 
    var udate = Date.parse(this.value); 
 
    var sysdate = Date.now(); 
 
    document.querySelector('#d').innerText = udate; 
 
    document.querySelector('#sys').innerText = sysdate; 
 

 
});
form { 
 
    position: relative; 
 
} 
 
label, input, output { 
 
    float: left; 
 
} 
 
label { 
 
    clear: left; 
 
    width: 128px; 
 
}
<form> 
 
    <label for="date">user input</label> 
 
    <input type="date" name="date" id="date"> 
 
    <label for="d">user date</label> 
 
    <output id="d" name="d" for="date"></output> 
 
    <label for="sys">system date</label> 
 
    <output id="sys" name="sys"></output> 
 
</form>