2017-03-16 88 views
0

我知道如何添加日期的問題已被問了很多。試過這些答案,它只是不起作用。 我有一個日期選擇器從我得到格式d.m.Y的日期,我得到幾天添加在我從DB獲得的PHP變量。我想在另一個輸入中顯示添加的日期。 獲取第二個輸入的var和顯示是沒有問題的。javascript從datepicker獲取日期比添加日期

var days = '2'; // <?php echo $days ?>; 
 
days = parseInt(days); 
 

 
function autoDatum() { 
 
    var date_input = document.getElementById("date_input").value; 
 
    var date = Date(date_input); 
 
    var newdate = new Date(date); 
 

 
    newdate.setDate(newdate.getDate() + days); 
 

 
    var dd = newdate.getDate(); 
 
    var mm = newdate.getMonth() + 1; 
 
    var y = newdate.getFullYear(); 
 
    var someFormattedDate = dd + '.' + mm + '.' + y; 
 

 
    document.getElementById('date_valute_input').value = someFormattedDate; 
 
}
body { 
 
    display: flex; 
 
    flex-direction: column; 
 
    justify-content: space-between; 
 
} 
 

 
div { 
 
    display: flex; 
 
    justify-content: space-between; 
 
    width: 300px; 
 
    margin: 10px; 
 
}
<div> 
 
    <label for="date_input">date_input</label> 
 
    <input id="date_input" type="text" value="16.03.2017"> 
 
</div> 
 
<div> 
 
    <label for="date_valute_input">date_valute_input</label> 
 
    <input id="date_valute_input" type="text" value=""> 
 
</div>

我只得到今天的日期+的日子,而不是選定的日期。我研究了很多不同的代碼,但只有這個代碼不會凍結。 有人可以知道如何解析日期嗎? 與php相比,在php和mysql中使用日期很容易。

+0

是元素''date_input''' KarelG

+0

nope它的日期得到字符串d.m.Y. –

+0

如果你把它作爲'dmY',那麼你必須自己解析它,並使用'新日期(年,月,日)'(年,月和日從字符串中提取 - 只是分割它?)或者使用一個爲您完成工作的外部庫。 – KarelG

回答

0

使用的那一刻庫: n - 天

var newDate = moment(date_input).add(n, 'days'); 
0

你的功能似乎是工作。 是不是你所期望的?

var days = '2'; // <?php echo $days ?>; 
 
days = parseInt(days); 
 

 
function autoDatum() { 
 
    var date_input = document.getElementById("date_input").value.split('.'); 
 
    var date = new Date(date_input[2], date_input[1], date_input[0]); 
 
    var newdate = new Date(date.getFullYear(), date.getMonth(), date.getDate() + days); 
 
    var dd = newdate.getDate(); 
 
    var mm = newdate.getMonth(); 
 
    var y = newdate.getFullYear(); 
 
    var someFormattedDate = dd + '.' + mm + '.' + y; 
 

 
    document.getElementById('date_valute_input').value = someFormattedDate; 
 
} 
 

 
autoDatum();
body { 
 
    display: flex; 
 
    flex-direction: column; 
 
    justify-content: space-between; 
 
} 
 

 
div { 
 
    display: flex; 
 
    justify-content: space-between; 
 
    width: 300px; 
 
    margin: 10px; 
 
}
<div> 
 
    <label for="date_input">date_input</label> 
 
    <input id="date_input" type="text" value="03.06.2015"> 
 
</div> 
 
<div> 
 
    <label for="date_valute_input">date_valute_input</label> 
 
    <input id="date_valute_input" type="text" value=""> 
 
</div>

+0

它的工作,但它總是採用今天的日期。該函數不是我的,但我從JSFidle中獲得的函數進行了修改。但忘了保存鏈接給作者的道具。 –

+0

我已經更新了我的答案,現在它已將輸入字段的日期考慮在內,並且將其添加了2天 – Ionut

+0

您的代碼比我的要乾淨得多。但我正在使用KarelG幫助我的那個。 –

1

正如@KarelG在我解析我形成輸入日期評論說,現在,它的工作原理。

var days = <?php echo $days ?>; 
days = parseInt(days); 


function autoDatum() { 
var date_input = document.getElementById("date_input").value; 

var date = date_input.split("."); 


var newdate = new Date(date [2], date [1]-1, date [0]); 

newdate.setDate(newdate.getDate() + days); 

var dd = newdate.getDate(); 
var mm = newdate.getMonth() + 1; 
var y = newdate.getFullYear(); 

var someFormattedDate = dd + '.' + mm + '.' + y; 

document.getElementById('date_valute_input').value = someFormattedDate; 
+0

只是fyi,添加+ 1的原因是在javascript中,月份值從0開始(因此1月= 0,2月= 1,... 12月= 11)這是令人困惑的。但你至少做了一些努力。用_javascripting_玩得開心 – KarelG