2017-03-16 13 views
0

日付を追加する方法についての質問がたくさんありました。それらの答えを試してみると、うまくいきません。 日付ピッカーがあります。日付をd.m.Yの形式で取得し、DBから取得するPHP変数を追加する日数があります。追加した日付を別の入力に表示するとします。 varを取得して2番目の入力に表示することは問題ありません。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とmysqlで日付を扱うのはjavascriptに比べて簡単です。

+0

は、「date_input」要素「input type =」date「...」ですか?それとも、実際には数値的な時間(UTCから)を返しますか?必要に応じて、date(回)で作業するときにmoment.jsを使用して支援することができます。 – KarelG

+0

そのの日付は文字列d.m.Yとなっています。 –

+0

'dmY'という名前であれば、それを自分で解析し、' new Date(year、month、day) 'を使用しなければなりません(文字列から抽出された年月日が入ります。あなたのために仕事をする外部ライブラリを使用してください。 – 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

それは働いたが、それは今日のallestways日付を取った。機能は私のものではありませんが、私は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を追加する理由は、月の値が0から始まるので(january = 0、february = 1、... december = 11)、混乱します。しかし、少なくともあなたはいくつかの努力をしました。 _javascripting_で楽しんでください – KarelG

関連する問題