Próbuję użyć, momentjs
aby sprawdzić, czy dana data jest dzisiaj, czy w przyszłości.
Oto co mam do tej pory:
<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>
Kod ocenia moją datę (31 stycznia 2014 r.) Jako datę z przeszłości.
Masz pojęcie, co robię źle?
moment().diff(SpecialToDate)
poda różnicę w milisekundach.'days'
nie jest potrzebne. Będzie to działać we wszystkich scenariuszach. Przykładem może być SpecialToDate'2018-10-26 00:00:00'
.Możesz użyć
isSame
funkcji:źródło
startTime
? Obiekt daty nie maisSame
metody ...źródło
Ponieważ wydaje się, że nikt jeszcze o tym nie wspominał, najprostszym sposobem sprawdzenia, czy obiekt daty Moment jest w przeszłości:
Lub w przyszłości:
Po prostu zostaw argumenty puste - domyślnie będzie to teraz.
Jest też
isSameOrAfter
iisSameOrBefore
.NB to czynniki w czasie. Jeśli zależy ci tylko na dniu, zobacz odpowiedź Dipendu .
źródło
momentObj
moim przykładzie jest to przypadek daty chwili. Dokumenty mówią konkretnie o utworzeniu nowego wystąpienia (bieżący czas), a następnie sprawdzeniu, czy było to w przeszłości, w jednym oświadczeniu. Ja nie sugeruję zrobićmoment().isBefore()
co jest kompletnie bez sensu - dlaczego chcesz sprawdzić, czy teraz jest w przeszłości (lub przyszłości)?Możesz użyć
isAfter()
funkcji zapytania momentjs:Sprawdź, czy chwila jest po innej chwili.
Jeśli chcesz ograniczyć ziarnistość do jednostki innej niż milisekundy, podaj jednostki jako drugi parametr.
http://momentjs.com/docs/#/query/is-after/
źródło
Odwróć jest przed chwilą metodą moment, aby sprawdzić, czy data jest taka sama jak dzisiaj lub w przyszłości, tak jak to:
źródło
Na wypadek, gdyby ktoś inny tego potrzebował, po prostu zrób to:
lub jeśli chcesz funkcji:
Gdzie data jest datą, którą chcesz sprawdzić.
Wyjaśnienie
moment(0, "HH")
wraca dzisiaj o północy.date1.diff(date2, "days")
zwraca liczbę dni między datą 1 a datą 2.Aktualizacja
Od tamtej pory znalazłem funkcję isSame , która moim zdaniem jest właściwą funkcją do sprawdzenia, czy data jest dzisiaj:
źródło
Aby sprawdzić, czy jest dzisiaj :
Jeśli porównamy dwie daty, które zawierają również informacje o czasie
isSame
, oczywiście się nie powiedzie.diff
zawiedzie w przypadku, gdy dwie daty obejmują nowy dzień:Myślę, że najlepszym sposobem, nawet jeśli nie jest szybki i krótki, jest:
Aby sprawdzić, czy będzie w przyszłości :
Jak sugerują także inni użytkownicy,
diff
metoda działa.źródło
Jeśli potrzebujesz tylko wiedzieć, który z nich jest większy, możesz również porównać je bezpośrednio:
Mam nadzieję że to pomoże!
źródło
jeśli firstDate jest taki sam lub po (przyszłym) secondDate zwraca true , w przeciwnym razie zwraca false Toda is firstDate = new Date ();
Istnieje isSame, isBefore i isAfter na dzień porównaj przykład;
źródło
Użyj najprostszego, aby sprawdzić przyszłą datę
źródło
A następnie użyj tego wiersza:
źródło
Wybierz wczoraj, aby sprawdzić poprzednie dni lub nie przy pomocy
moment().subtract(1, "day");
Odniesienie: - http://momentjs.com/docs/#/manipicing/subtract/
źródło
Jeśli chcemy różnicy bez czasu, możesz ustawić inną datę (tylko datę bez godziny), jak poniżej, używając formatu momentu.
Ponieważ podczas tej pracy miałem do czynienia z różnicą;
Więc wymyślił następujące;
const dateValidate = moment(moment().format('YYYY-MM-DD')).diff(moment([YOUR SELECTED DATE HERE]).format('YYYY-MM-DD'))
Prosimy o komentarz, jeśli jest coś, co można poprawić.
Dzięki,
źródło
Chciałem tego dla czegoś innego, ale w końcu znalazłem sztuczkę, którą możesz wypróbować
somedate.calendar(compareDate, { sameDay: '[Today]'})=='Today'
źródło
sprawdź za pomocą:
wraca w kilka sekund ..
Jeśli sprawdzi jako warunek 2 minuty, to
źródło
Najprostsza odpowiedź to:
Sprawdzi wartość północy i zwróci dokładny wynik. Działa również, gdy różnica czasu między dwiema datami jest mniejsza niż 24 godziny.
źródło