Vergleichen Sie nur den Datumsteil, ohne die Zeit in JavaScript zu vergleichen
Was ist falsch mit dem code unten?
Vielleicht wäre es einfacher, vergleichen Sie einfach das Datum und nicht die Zeit. Ich bin mir nicht sicher, wie dies zu tun, und ich suchte, finden konnte ich aber nicht mein genaues problem.
BTW, wenn ich die beiden Termine in eine Warnung, Sie zeigen, wie genau das gleiche.
Mein code:
window.addEvent('domready', function() {
var now = new Date();
var input = $('datum').getValue();
var dateArray = input.split('/');
var userMonth = parseInt(dateArray[1])-1;
var userDate = new Date();
userDate.setFullYear(dateArray[2], userMonth, dateArray[0], now.getHours(), now.getMinutes(), now.getSeconds(), now.getMilliseconds());
if (userDate > now)
{
alert(now + '\n' + userDate);
}
});
Gibt es eine einfachere Möglichkeit zum vergleichen von Daten und nicht einschließlich der Zeit?
InformationsquelleAutor der Frage moleculezz | 2010-04-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin immer noch JavaScript lernen, und die einzige Möglichkeit, die ich gefunden habe, die funktioniert für mich, zu vergleichen zwei Daten, ohne die Zeit ist die Verwendung der
setHours
- Methode des Date-Objekts, und legen Sie die Stunden, Minuten, Sekunden und Millisekunden auf null. Dann vergleichen Sie die beiden Termine.Beispielsweise
date2
wird mit Stunden, Minuten, Sekunden und Millisekunden auf null, aber Datum1 haben Sie auf die Zeit, die date1 erstellt wurde. Um loszuwerden, die Stunden, Minuten, Sekunden und Millisekunden auf Datum1 Folgendes tun:Jetzt können Sie vergleichen die beiden Datumsangaben als DATEN nur, ohne sich Gedanken über die Zeit-Elemente.
InformationsquelleAutor der Antwort nexar
Wie über dieses?
Es erlaubt Ihnen, vergleichen Sie das Datum Teil des Datums, wie dies ohne Auswirkungen auf den Wert der variable:
InformationsquelleAutor der Antwort AdEpt
PASSEN SIE DIE ZEITZONE
Mithilfe des date-Objekts zu stellen nur-ein-date sofort wird Sie in einen riesigen überschuss Präzisions-problem. Sie benötigen für die Verwaltung der Zeit und die Zeitzone, um Sie zu halten, und Sie kann schleichen in bei jedem Schritt. Die akzeptierte Antwort auf diese Frage fällt in die Falle.
Einem javascript-date hat keine Ahnung von timezone. Es ist ein moment in der Zeit (ticks seit Beginn der Epoche) mit handy (statische) Funktionen für das übersetzen in und aus Zeichenfolgen, die in der lokalen Zeitzone des Geräts. Repräsentieren ein Datum mit einem date-Objekt, Sie möchten Ihre Termine zu vertreten Mitternacht nach UTC, zu Beginn des Termins in Frage. Dies ist eine häufige und notwendige Konvention, mit der Sie mit Daten arbeiten, unabhängig von der jahreszeit oder Zeitzone Ihrer Entstehung. Sie müssen also sehr wachsam sein, um zu verwalten, der Begriff der Zeitzone, besonders, wenn Sie Ihre Mitternacht UTC Date-Objekt.
Deserialisieren (oder erstellen Mitternacht UTC Date-Objekte)
Meisten der Zeit, werden Sie wollen Ihr date zu reflektieren die Zeitzone des Benutzers. Klicken, wenn heute Ihr Geburtstag. Benutzer in NZ und UNS auf zur gleichen Zeit und Holen Sie verschiedene Termine. In diesem Fall, tun Sie dies...
Manchmal ist die internationale Vergleichbarkeit Trumpf lokale Genauigkeit. In diesem Fall, tun Sie dies...
Deserialisieren ein Datum
Oft Daten auf den Draht wird im format YYYY-MM-DD. Deserialisieren Ihnen, dies zu tun...
Serialisieren
Aufgepasst zu verwalten Zeitzone, wenn Sie schaffen, Sie müssen jetzt bitte bewahren Sie die Zeitzone aus, wenn Sie wieder zurück konvertieren in eine string-Darstellung. So können Sie sicher nutzen...
toISOString()
getUTCxxx()
getTime() //returns a number with no time or timezone.
.toLocaleDateString("fr",{timezone:"UTC"}) //whatever locale you want, but ALWAYS UTC.
Und völlig vermeiden, alles andere, vor allem...
getYear()
,getMonth()
,getDate()
Also um deine Frage zu beantworten, 7 Jahre zu spät...
Siehe es läuft...
InformationsquelleAutor der Antwort bbsimonbb
Mit Moment.js
Wenn Sie die Möglichkeit haben, einschließlich einer Drittanbieter-Bibliothek, es ist definitiv lohnt sich ein Blick auf Moment.js. Es macht die Arbeit mit
Date
undDateTime
viel, viel einfacher.Zum Beispiel sehen, wenn ein Termin kommt nach einem anderen Datum, aber ohne die Zeiten, würden Sie so etwas tun:
Dem zweiten parameter übergeben Sie in
isAfter
ist die Präzision zu tun, der Vergleich und kannyear
month
week
day
hour
minute
odersecond
.InformationsquelleAutor der Antwort Joshua Pinter
Diese könnten etwas sauberer sein-version, beachten Sie auch, dass sollten Sie immer ein radix bei der Verwendung von parseInt.
Kasse der MDC parseInt Seite für mehr Informationen über das radix.
JSLint ist ein großes Werkzeug für den Fang von Dingen wie eine fehlende radix und viele andere Dinge, die verursachen können, obskure und schwer zu Debuggen, Fehler. Es zwingt Sie dazu verwenden, besser coding standards, so vermeiden Sie zukünftige Kopfschmerzen. Ich benutze es auf jeden JavaScript-Projekt I-code.
InformationsquelleAutor der Antwort Useless Code
Vergleichen Sie einfach mit .toDateString wie unten:
Zurückkehren Zeitpunkt nur teilweise und nicht Zeit oder Zeitzone, wie diese:
Daher sowohl Datum verglichen werden kann, die dieses format ebenfalls ohne Zeit Teil.
InformationsquelleAutor der Antwort Rahi
Den date.js Bibliothek ist praktisch für diese Dinge. Es macht alle JS-Datum scriping viel einfacher.
InformationsquelleAutor der Antwort Diodeus - James MacFarlane
Dies ist die Art, wie ich es mache:
InformationsquelleAutor der Antwort Fabrizio
Als ich hier nicht sehen ähnlichen Ansatz, und ich bin nicht gerade von der Einstellung, h/m/s/ms auf 0, da es Probleme verursachen kann, mit genauen übergangs auf die lokale Zeitzone geändert
date
Objekt (vermute ich so), lassen Sie mich Ihnen hier diese, geschrieben wenige Augenblicke alt, lil-Funktion:+
: Einfach zu bedienen, macht einen grundsätzlichen Vergleich Operationen (vergleichen, Tag, Monat und Jahr, ohne Zeit.)-
: Es scheint, dass dies eine absolute Gegenteil von "out of the box" - denken.Verwendung:
datecompare(date1, '===', date2)
für die überprüfung auf Gleichheit,datecompare(date1, '>', date2)
für größere Kontrolle,!datecompare(date1, '>', date2)
für weniger oder gleich überprüfenAuch, natürlich, können Sie wechseln
date1
unddate2
an Orten zu erreichen, jede andere einfache Vergleich.InformationsquelleAutor der Antwort Max Yari
Stellen Sie sicher, konstruieren
userDate
mit einer 4-stelligen Jahr alssetFullYear(10, ...) !== setFullYear(2010, ...)
.InformationsquelleAutor der Antwort Alex K.
Nach der Lektüre diese Frage ziemlich gleichen Zeit, nachdem es geschrieben ist, habe ich beschlossen, nach einer anderen Lösung, da ich nicht finde, dass es ganz zufriedenstellend, zumindest für meine Bedürfnisse:
Benutzt habe ich so etwas wie dieses:
So, ich könnte verwendet haben, die Daten in das format, das ich wollte für die Bearbeitung danach. Aber dies war nur für meinen Bedarf, aber ich habe beschlossen, poste es trotzdem, vielleicht hilft es jemand
InformationsquelleAutor der Antwort Aleks
Können Sie einige arithmetische mit dem gesamten ms.
Ich mag das, weil keine updates auf die ursprünglichen Termine sind gemacht und perfom schneller als string-split und vergleichen.
Hoffe diese Hilfe!
InformationsquelleAutor der Antwort Miguel
Eine effiziente und korrekte Weise zu vergleichen Termine:
Er ignoriert den Teil der Zeit, Sie arbeitet für verschiedene Zeitzonen, und Sie können vergleichen, für die Gleichstellung
==
zu. 86400000 ein ist die Anzahl der Millisekunden in einem Tag (= 24*60*60*1000
).Beachten Sie, dass der Gleichheitsoperator
==
sollte nie verwendet werden, für den Vergleich von Date-Objekten, weil es schlägt fehl, wenn Sie erwarten würden, eine Gleichheit testen, um zu arbeiten, weil es vergleicht zwei Datum-Objekte (und nicht der Vergleich der beiden Daten), z.B.:Hinweise: Wenn Sie vergleichen die Date-Objekte, die die Zeit haben, das Teil auf null gesetzt, dann könnten Sie
date1.getTime() == date2.getTime()
ist es aber kaum Wert der Optimierung. Sie können<
>
<=
oder>=
beim Vergleich von Date-Objekten direkt, da diese Operatoren zuerst konvertiert das Date-Objekt durch aufrufen.valueOf()
bevor der operator ist der Vergleich.InformationsquelleAutor der Antwort robocat
Ich weiß, diese Frage wurde bereits beantwortet, und dies möglicherweise nicht der beste Weg, aber in meinem Szenario seine Arbeit perfekt, so dass ich dachte, es kann helfen, jemanden wie mich.
wenn Sie
date string
alsist und Sie nur wollen, vergleichen Sie das Datum Teil mit einer anderen Date-Objekt in JS,
dann müssen Sie
convert
diestring
zuDate
Objekt mitnew Date("2018-01-01T18:19:12.543");
und hier ist der trick :-
Habe ich verwendet
toDateString()
vonDate object
von JS, der gibt den Datums-string nur.Hinweis: vergessen Sie nicht, verwenden Sie die
.valueOf()
Funktion beim Vergleich der Daten.mehr Infos über
.valeOf()
ist hier ReferenzGlücklich codding.
InformationsquelleAutor der Antwort R K Sharma
Helfen. Ich schaffte es, es so.
InformationsquelleAutor der Antwort Hiran D.A Walawage