2017-03-16 42 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