与えられた日付が今日か未来かを確認するためにmomentjs
を使います。
これは私がこれまでに持っているものです:
<script type="text/javascript" src="http://momentjs.com/downloads/moment.min.js"></script>
<script type="text/javascript">
var SpecialToDate = '31/01/2014'; // DD/MM/YYYY
var SpecialTo = moment(SpecialToDate, "DD/MM/YYYY");
if (moment().diff(SpecialTo) > 0) {
alert('date is today or in future');
} else {
alert('date is in the past');
}
</script>
このコードでは、私の日付(2014年1月31日)を過去の日付として評価しています。
私が悪いことをしているという考えはありますか?
ドキュメントを読んだ後: http://momentjs.com/docs/#/displaying/difference/ 、マイナスのようにdiff
関数を考慮する必要があります。オペレーター。
// today < future (31/01/2014)
today.diff(future) // today - future < 0
future.diff(today) // future - today > 0
そのため、あなたはreverseあなたの状態にしなければなりません。
すべて問題ないことを確認したい場合は、関数に追加のパラメータを追加できます。
moment().diff(SpecialTo, 'days') // -8 (days)
isSame
関数を使うことができます。
var iscurrentDate = startTime.isSame(new Date(), "day");
if(iscurrentDate) {
}
// Returns true if it is today or false if it's not
moment(SpecialToDate).isSame(moment(), 'day');
MomentjsのisAfter()
クエリ関数を使うことができます。
ちょっと待ってください。
moment('2010-10-20').isAfter('2010-10-19'); // true
粒度をミリ秒以外の単位に制限したい場合は、2番目のパラメーターとして単位を渡します。
moment('2010-10-20').isAfter('2010-01-01', 'year'); // false
moment('2010-10-20').isAfter('2009-12-31', 'year'); // true
まだ誰も言及していないようなので、Moment日付オブジェクトが過去のものであるかどうかを調べる最も簡単な方法は、次のとおりです。
momentObj.isBefore()
または将来的には:
momentObj.isAfter()
引数を空白のままにしてください - これがデフォルトになります。
isSameOrAfter
と isSameOrBefore
もあります。
N.B.これは時間の要因です。あなたが一日だけ気にするなら、 Dipenduの答え を見てください。
日付が今日と同じか未来かをチェックするモーメントの前のメソッド
!moment(yourDate).isBefore(moment(), "day");
今日かどうかを確認するには:
時間情報isSame
も含む2つの日付を比較すると、明らかに失敗します。 2つの日付が新しい日にまたがる場合、diff
は失敗します。
var date1 = moment("01.01.2016 23:59:00", "DD.MM.YYYY HH.mm.ss");
var date2 = moment("02.01.2016 00:01:00", "DD.MM.YYYY HH.mm.ss");
var diff = date2.diff(date1); // 2seconds
早くても短くなくても、私は最善の方法を考えます。
var isSame = date1.date() == date2.date() && date1.month() == date2.month() && date1.year() == date2.year()
将来かどうかを確認するには:
他のユーザーによっても示唆されているように、diff
メソッドはうまくいきます。
var isFuture = now.diff(anotherDate) < 0
どちらが大きいかを知るだけでよい場合は、それらを直接比較することもできます。
var SpecialToDate = '31/01/2014'; // DD/MM/YYYY
var SpecialTo = moment(SpecialToDate, "DD/MM/YYYY");
if (moment() > SpecialTo) {
alert('date is today or in future');
} else {
alert('date is in the past');
}
お役に立てれば!
万が一他の人がこれを必要としている場合は、これを実行してください。
const isToday = moment(0, "HH").diff(date, "days") == 0;
またはあなたが機能が欲しいなら:
isToday = date => moment(0,"HH").diff(date, "days") == 0;
ここで、dateは確認したい日付です。
説明
moment(0, "HH")
は、今日の深夜0時を返します。
date1.diff(date2, "days")
は、date1とdate2の間の日数を返します。
更新
私はそれ以来、 isSame 関数を見つけました。日付が今日の場合はout:
moment().isSame('2010-02-01', 'day'); // Return true if we are the 2010-02-01
firstDateが同じかそれ以降(未来)ならsecondDateがtrueを返し、そうでなければfalseを返します。戸田はfirstDate = new Date()です。
static isFirstDateSameOrAfterSecondDate(firstDate: Date, secondDate: Date): boolean {
var date1 = moment(firstDate);
var date2 = moment(secondDate);
if(date1 && date2){
return date1.isSameOrBefore(date2,'day');
}
return false;
}
IsSame、isBefore、およびisAfterがあります。
static isFirstDateSameSecondDate(firstDate: Date, secondDate: Date): boolean {
var date1 = moment(firstDate);
var date2 = moment(secondDate);
if (date1 && date2) {
return date1.isSame(date2,'day');
}
return false;
}
static isFirstDateAfterSecondDate(firstDate: Date, secondDate: Date): boolean {
var date1 = moment(firstDate);
var date2 = moment(secondDate);
if(date1 && date2){
return date1.isAfter(date2,'day');
}
return false;
}
static isFirstDateBeforeSecondDate(firstDate: Date, secondDate: Date): boolean {
var date1 = moment(firstDate);
var date2 = moment(secondDate);
if(date1 && date2){
return date1.isBefore(date2,'day');
}
return false;
}
function isTodayOrFuture(date){
date = stripTime(date);
return date.diff(stripTime(moment.now())) >= 0;
}
function stripTime(date){
date = moment(date);
date.hours(0);
date.minutes(0);
date.seconds(0);
date.milliseconds(0);
return date;
}
それからこれを次のように使うだけです。
isTodayOrFuture(YOUR_TEST_DATE_HERE)
将来の日付をチェックするために最も簡単なものを使う
if(moment().diff(yourDate) >= 0)
alert ("Past or current date");
else
alert("It is a future date");
moment().subtract(1, "day");
の助けを借りて過去をチェックするかどうかをチェックするには昨日を選択してください
参照: - http://momentjs.com/docs/#/manipulating/subtract /
function myFunction() {
var yesterday = moment().subtract(1, "day").format("YYYY-MM-DD");
var SpecialToDate = document.getElementById("theDate").value;
if (moment(SpecialToDate, "YYYY-MM-DD", true).isAfter(yesterday)) {
alert("date is today or in future");
console.log("date is today or in future");
} else {
alert("date is in the past");
console.log("date is in the past");
}
}
<script src="http://momentjs.com/downloads/moment.js"></script>
<input type="date" id="theDate" onchange="myFunction()">
私は他の何かのためにそれを望んでいたが結局あなたが試すことができるトリックを見つけた
somedate.calendar(compareDate, { sameDay: '[Today]'})=='Today'
var d = moment();
var today = moment();
console.log("Usign today's date, is Date is Today? ",d.calendar(today, {
sameDay: '[Today]'})=='Today');
var someRondomDate = moment("2012/07/13","YYYY/MM/DD");
console.log("Usign Some Random Date, is Today ?",someRondomDate.calendar(today, {
sameDay: '[Today]'})=='Today');
var anotherRandomDate = moment("2012/07/13","YYYY/MM/DD");
console.log("Two Random Date are same date ? ",someRondomDate.calendar(anotherRandomDate, {
sameDay: '[Today]'})=='Today');
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
時間なしの違いが欲しい場合は、以下のように、時のフォーマットを使用して、日付を異なる時間(日付なしの日付のみ)にすることができます。
として、私はやっている間の違いで問題に直面していました。
moment().diff([YOUR DATE])
だから、次のように思い付いた。
const dateValidate = moment(moment().format('YYYY-MM-DD')).diff(moment([YOUR SELECTED DATE HERE]).format('YYYY-MM-DD'))
IF dateValidate > 0
//it's past day
else
//it's current or future
改善点がある場合は、遠慮なくコメントしてください。
ありがとう、