私はチェックアウト日はチェックイン日よりも早い全くないことを保証するために、これらの2つの入力を比較したい二つの入力入力から2つの日付を比較するにはどうすればよいですか?
From: <input id="from" type="date" placeholder="dd/mm/yy"><br>
To: <input id="to" type="date" placeholder="dd/mm/yy">
があります。しかし、どのように比較するのですか? THX
私はチェックアウト日はチェックイン日よりも早い全くないことを保証するために、これらの2つの入力を比較したい二つの入力入力から2つの日付を比較するにはどうすればよいですか?
From: <input id="from" type="date" placeholder="dd/mm/yy"><br>
To: <input id="to" type="date" placeholder="dd/mm/yy">
があります。しかし、どのように比較するのですか? THX
これは私がそれを
HTMLを行うだろう方法です
<script>
function compareDates() {
//Get the text in the elements
var from = document.getElementById('from').textContent;
var to = document.getElementById('to').textContent;
//Generate an array where the first element is the year, second is month and third is day
var splitFrom = from.split('/');
var splitTo = to.split('/');
//Create a date object from the arrays
var fromDate = Date.parse(splitFrom[0], splitFrom[1] - 1, splitFrom[2]);
var toDate = Date.parse(splitTo[0], splitTo[1] - 1, splitTo[2]);
//Return the result of the comparison
return fromDate < toDate;
}
</script>
<input id="from" type="date" placeholder="dd/mm/yy"><br>
<input id="to" type="date" placeholder="dd/mm/yy">
<button onclick="compareDates()">Compare</button>
どのように乗り遅れているか教えてください。
うん、それは動作します!手伝ってくれてどうもありがとう! – tweaktweak
ここにいくつかのエラーがあります:* Date.parse *はコンストラクタではなく、1つの引数しか取らず、 'new Date.parse(...)'は 'new Date(...)'でなければなりません。また、月のインデックスはゼロであるため、 'new Date(splitFrom [0]、splitFrom [1] - 1、splitFrom [2])'となります。答えは、ポストコードだけでなく、問題を説明し、それを修正する方法を説明する必要があります。 – RobG
あなたはvalueAsDateを使用して、コンパレータを使用することができます。
input1 = document.getElementById('from');
input2 = document.getElementById('to');
date1 = input1.valueAsDate;
date2 = input2.valueAsDate;
console.log(date1 < date2 ? 'valid' : 'invalid');
あなたは正しいです、私はそれを修正します。 – marcan2020
あなたの日付形式は/ MM/YYをddをしたい場合は、文字列を日付に変換するには、次の機能を使用することができます。
function compareDate(str){
// str format should be dd/mm/yyyy. Separator can be anything e.g./or -. It wont effect
var dt = parseInt(str.substring(0,2));
var mon = parseInt(str.substring(3,5));
var yr = parseInt(str.substring(6,10));
var date = new Date(yr, mon-1, dt);
return date;
}
そして、単に入力から値を取得し、日付としてそれらを比較
var input1 = compareDate(document.getElementById('from').value);
var input2 = compareDate(document.getElementById('to').value);
Dateオブジェクトは、あなたが望むことを行います。日付ごとに1つずつ作成し、>、<、< =または> =を使って比較します。
JavaScriptを使用して、入力の値を取得できます。
var fromValue = document.getElementById('from').value;
var toValue = document.getElementById('to').value;
、その後の日付に変換するJavaScriptのDateオブジェクトを使用します。
var fromDate = new Date(fromValue);
var toDate = new Date(toValue);
と真夜中からの経過時間を削除します。
fromDate.setHours(0,0,0,0);
toDate.setHours(0,0,0,0);
次に、fromDate
をtoDate
:
if (fromDate === toDate) { ... }
'input.valueAsDate'を使ってみてください。 – Endless
作品!!!!!!多くのありがとう!!!!!!! – tweaktweak
もちろん、幸運。数行のコードを削除したい場合は、@Endlessの提案を含めることを忘れないでください。 – axlj
あなたはMoment.js
var today = new Date();
var diff = moment().diff(today, 'days');
console.log(diff); // 0
詳細にdiff
方法を使用することができます。http://momentjs.com/docs/#/displaying/difference/
html5の日付入力は、常に 'yyyy-MM-dd'のように書式設定する必要があります。入力値が' dd/mm/yy'の値を設定しようとすると、無効な値が返されます。プレースホルダを変更する必要があると思っているだけです... – Endless
@ Endless - すべての実装が日付入力をサポートするわけではありません。 – RobG