DateTime-und Date-Vergleich
Warum würde diese Anweisung return true? Ich verstehe, dass ich den Vergleich zwischen einer Date
zu einem DateTime
variable, aber ich bin auf der Suche nach eine technische Erklärung.
DateTime dt = DateTime.newInstance(2012,04,30,0,0,0);
system.debug(dt > Date.valueOf('2012-04-30'));
Außerdem würde DateTime-Werte (für die dt-variable) vor 2012-04-30 auch true zurückgeben?
Ich denke, dass seine wahrscheinlich TZ Zusammenhang, glaube nicht, dass das Datum nur val hat jede TZ-info.
Guter Gedanke, aber ein DateTime-von
aber das würde immer größer sein als das Datum. (Ich könnte mir vorstellen, dass das Datum wirklich das Datum + Mitternacht für den Vergleich)
Das macht Sinn, ich wusste nicht, das Datum wird Datum+Mitternacht. Danke!
Guter Gedanke, aber ein DateTime-von
DateTime.newInstance(2012,04,30,12,0,0);
auch gibt true zurück, und 12-Uhr-mehr als kompensiert Zeitzone Unterschiede.aber das würde immer größer sein als das Datum. (Ich könnte mir vorstellen, dass das Datum wirklich das Datum + Mitternacht für den Vergleich)
Das macht Sinn, ich wusste nicht, das Datum wird Datum+Mitternacht. Danke!
InformationsquelleAutor Matt K | 2012-05-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Superfell
angemerkt in den Kommentaren, dass dies wahrscheinlich aufgrund eines time-zone-Umwandlung sowie midnight (00:00:00
) angehängt wird, um das Datum für den Vergleich. Kurze Geschichte: er wurde auch Recht sein, weil von Mitternacht, an die angehängt wird, um das Datum für den Vergleich. Das detail ist unten.Ich brauchte, um dies in Aktion zu sehen, um es zu verstehen, ganz; also schrieb ich ein code-block.
Die resultierende debug-log angezeigt:
Den einfachsten Lösung wäre ein Vergleich gegen
Date.valueOf('2012-05-01');
. Es ist jedoch möglich, zu vergleichen, gegen CreatedDate Felder, die über dienewInstanceGMT
- Methode der DateTime-Typ aus. Mit den DateTime-Methode, Mitternacht Bedürfnisse berücksichtigt werden.ODER
Beiden Methoden führte zu den gewünschten Ergebnissen:
InformationsquelleAutor Matt K