2016-12-01 18 views
1

私はドロップダウンカレンダーからユーザーが選択した値に基づいて設定している日付オブジェクトを持っています。選択したものに3日追加する。 12月を除いて、すべての月に完全に正常に動作します。 12月から特定の日付を選択して3日を追加すると、返される月の値は「」ではなく「」となります。Html5日付管理の問題:12月の特定の日付に3日を追加すると、jsで翌月1月が返されます

ここに私のコードです。

var dateinput= document.getElementById("date_picker").value; 
     console.log(dateinput); 
     var timeinput= document.getElementById("time_picker").value; 
     var dateobj = dateinput + ' ' +timeinput; 
     var parts = dateobj.split(/[-\s:]/); 
     var date = new Date(parts[0],parts[1],parts[2],parts[3],parts[4]); 
     console.log(parts[1]) 
     date.setDate(date.getDate() + 3); 
     console.log(date) 


     var dateobj2 = [date.getMonth(), date.getDate(), date.getFullYear()].map(pad).join('/') + 
       ' ' + [date.getHours(),date.getMinutes()].map(pad).join(':'); 
+0

'のdocument.getElementById( "date_picker")の値が何であるを確認することができます.value'? – Rayon

+1

どのように月をチェックしますか? 'getMonth'の戻り値を経由しますか? 「11」は12月、「0」は1月です。 12月はありません。 – Xufox

+0

私はgetMonth()を使用して月を取得しています。 – Phoenix

答えて

1
基本的に

ヶ月00 (Jan)から11 (Dec)に開始します。したがって、ユーザーが12を12月に入力した場合は、コンポーネントをnew Date(year, month, day, hours, minutes, seconds, milliseconds)に割り当てると、11を得るには1を引く必要があります。

だからあなたのコードになるだろう、

var date = new Date(parts[0], parts[1]-1, parts[2], parts[3], parts[4]); 

あなたは以下のスニペット、

function getDate() { 
 

 
     var dateinput= document.getElementById("date_picker").value; 
 
     var timeinput= document.getElementById("time_picker").value; 
 
     var dateobj = dateinput + ' ' +timeinput; 
 
     var parts = dateobj.split(/[-\s:]/); 
 
     var date = new Date(parts[0], parts[1]-1, parts[2], parts[3], parts[4]); 
 
     date.setDate(date.getDate() + 3); 
 
     console.log(date); 
 
}
<input type="date" id="date_picker" /> 
 
<input type="text" id="time_picker" /> 
 
<input type="button" value="Get Date" onclick="getDate()" /> 
 
<br/>

+0

ありがとうございます。それを試してみました。しかし、今月11日に戻っています: – Phoenix

+0

12のために11を表示していますか? – Aruna

+0

うん。-1をするとき:( – Phoenix

1
コード出力の下

http://prntscr.com/ddyjy3

<!doctype html> 
<html> 
    <head> 
    <title>Date Demo</title> 
    <style> 
ol { 
    display: inline-block; 
    list-style-type: none; 
} 

li { 
    display: block; 
    border: 1px solid green; 
    padding: 5px; 
} 
    </style> 

    </head> 
    <body> 
    <ul id="demo"></ul> 

<script> 
// set start date from your date picker 
// set daysToAdd to 3 to return next 3days from the selected date 
function showDates(startDate, daysToAdd) { 
    var aryDates = []; 

    for (var i = 0; i < daysToAdd; i++) { 
     var currentDate = new Date(); 
     currentDate.setDate(startDate.getDate() + i); 
     var fullDate = currentDate.getDate() + "/" + (currentDate.getMonth() + 1) + "/" + currentDate.getFullYear(); 
     aryDates.push('<li class="pick-date" data-date="' + fullDate + '"> ' + currentDate.getDate() + ' <span class="day">' + DayAsString(currentDate.getDay()) + '</span> ('+ fullDate +')</li>'); 
    } 

    return aryDates; 
} 

function DayAsString(dayIndex) { 
    var weekdays = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]; 
    return weekdays[dayIndex]; 
} 

var startDate = new Date();// document.getElementById('date_picker').value 
var aryDates = showDates(startDate, 7); 
document.getElementById("demo").innerHTML = aryDates.join(" "); 


</script> 

    </body> 
</html> 
+0

私がやっているのと同じこと..date.setDate(date.getDate()+ 3); – Phoenix

関連する問題