12時間形式で2回取得して比較する必要がある問題があります。プロジェクトにmoment.jsが含まれており、当初は次のように簡単だと考えていました。
var beginningTime = moment('8:45am');
var endTime = moment('9:00am');
console.log(beginningTime.isBefore(endTime)); //false???
フィドル:http://jsfiddle.net/KyleMuir/M4R4z/
不足しているものはありますか?これは難しい問題ではないように感じます。 beginningTime
またはendTime
でモーメント関数を実行すると、単にNAN
と表示されます
常にh:mma
形式で時間を処理している場合、解析時に指定できます...
var beginningTime = moment('8:45am', 'h:mma');
var endTime = moment('9:00am', 'h:mma');
console.log(beginningTime.isBefore(endTime)); // true
console.log(beginningTime.toDate()); // Mon May 12 2014 08:45:00
console.log(endTime.toDate()); // Mon May 12 2014 09:00:00
<script src="https://cdn.jsdelivr.net/momentjs/2.13.0/moment.min.js"></script>
今日を日付として使用するため、異なる日にまたがっている場合は機能しません。
8:45am
および9:00am
は無効な日付です
var beginningTime = moment('8:45am');
var endTime = moment('9:00am');
console.log(beginningTime.isValid(), endTime.isValid()) // FALSE
有効な形式を使用する必要があります: http://momentjs.com/docs/#/parsing/string/
そして、彼らは一貫した結果を得るために、 http://momentjs.com/docs/#/parsing/string-format/ を使用することを提案します
例えば。
moment("2010-10-20 4:30", "YYYY-MM-DD HH:mm"); // parsed as 4:30 local time
ドキュメントによると、モーメント変数は、許可されている形式を誤ってチェックすると宣言しています
http://momentjs.com/docs/#/parsing/string/
代わりに使用できます
var beginningTime = moment({
h: 8,
s: 45
});
var endTime = moment({
h: 9,
s: 0
});
console.log(beginningTime.isBefore(endTime)); //true
<script src="https://cdn.jsdelivr.net/momentjs/2.13.0/moment.min.js"></script>
コンソールを開いて、これを手動で実行してみてください:moment( "8:45 am")。toDate()
無効な日付が表示されるため、期待どおりの結果が得られません。一方、「2014-05-15 08:45」は日付を示します。