Datumsvergleich; gleiche Daten ungleich?
John Hawk
- javascript
d1=new Date(2005,5,5,0,0,0);
d2=new Date(2005,5,5,0,0,0);
alert(d1==d2);
Warum gibt Alert bei dem Script "false" aus? Wie kann ich feststellen ob 2 Daten gleich sind?
Interessanterweise geben die Operatoren > und < auch "false" aus. != und <= sowie >= geben "true" aus.
Ich weiß nicht weiter
Yerf!
d1=new Date(2005,5,5,0,0,0);
d2=new Date(2005,5,5,0,0,0);
alert(d1==d2);
>
> Warum gibt Alert bei dem Script "false" aus?
Du erzeugst 2 unterschiedliche Objekte durch die 2 new-Operationen. Das diese den selben Inhalt haben ist beim direkten Vergleich uninteressant, da wird nur die Referenz verglichen.
> Wie kann ich feststellen ob 2 Daten gleich sind?
Vergleiche den <http://de.selfhtml.org/javascript/objekte/date.htm#get_time@title=Zeitpunkt> der Datums-Objekte:
`alert(d1.getTime()==d2.getTime());`{:.language-javascript}
Gruß,
Harlequin
--
<!--[if IE]>This page is best viewed with a webbrowser. [Get one today!](http://www.opera.com)<![endif]-->
DANKE!
Ich glaube auf die Objekte wäre ich so schnell oder gar nicht gekommen.
Yerf!
DANKE!
Ich glaube auf die Objekte wäre ich so schnell oder gar nicht gekommen.
Sag das mal einem .NET-Programmierer ;-)
Inkompatibler gehts nicht... bei .NET ist ein Date-Objet ein Struct und damit ein Value-Typ... dazu noch die Problematik mit der Monatszählung (JS beginnt bei 0) und noch n paar Kleinigkeiten... vermutlich alles nur um mich zu Ärgern... ;-)
Gruß,
Harlequin
Warum gibt Alert bei dem Script "false" aus?
Weil du zwei Objects miteinander vergleichst. Das ist eine Grundregel in JavaScript: Objects sind im Gegensatz zu sogenannten Primitives nur mit sich selbst identisch und mit keinem anderen Object vergleichbar.
</archiv/2006/12/t141628/#m920393>
Interessanterweise geben die Operatoren > und < auch "false" aus.
< und > kannst du bei Date-Objekten nutzen und es kommt das heraus, was du erwartest. Es wird dann geprüft, ob das eine Datum jünger bzw. älter ist als das andere.
new Date(2005, 5, 4) < new Date(2005, 5, 5)
ergibt true
Mathias