Domino 9 und frühere Versionen > ND8: Entwicklung

Wie Datum richtig speichern? DateNumber geht nicht aber NDT-Klasse

<< < (2/2)

khing:
Jetzt habe ich mir noch einmal die Datentypen in den Dokumenteneigenschaften angesehen und da sehe ich, dass bei einem funtkionstüchtigen Wert "Zeit/Datum-Liste oder Zeitraum" steht und wenn es nicht geht, dann "Zeit/Datum" (Rückgabewert aus der Funktion). Außerdem ist der Wert mit "DD.MM.YYYY HH:MM:SS CET" aufgebaut, wenn es klappt und der falsche mit "DD.MM.YYYY HH:MM:SS CEDT". Kann es das sein? Auf jeden Fall schreibe ich auch ein Datatype 7 in das Backend-Doc.

diali:
so einfach geht es bei Zeitzonen nicht.

Wahrscheinlich verschiebst du das Datum von Sommerzeit auf ein Datum in der Winterzeit (oder umgekehrt). Die Differenz ist dann nach dem Verschieben des Datums genau eine Stunde, da der Notes-Client deine lokalen Zeiteinstellungen mit beachtet.

Nun zu den schlechten Nachrichten,
1. in der Klasse NotesDateTime ist TimeZone, ZoneTime Read-Only!
2. ConvertToZone, konvertiert in eine andere Zeitzone, dies wird dir im Client auch mit dieser Zeitzone angezeigt

Lösung:
1. ermitteln, welche Zeitzone im Ausgangsdatum verwendet wurde
2. prüfen ob das Zieldatum in der gleichen Zeitzone ist
3. Zeitzonen stimmen überein => alles i.O.
4. Zeitzonen stimmen nicht überein, dann muss die Zeit mit AdjustHour (in einigen Ländern auch mit AdjustMinute - bei Verschiebungen, die keine vollen Stunden sind) angepasst werden.

Glombi:

--- Zitat von: khing am 12.11.14 - 09:44:20 ---@Bernhard: Oja das kommt davon, wenn man OnTheFly hier Code eingibt  ;D Das ist natürlich Variant

--- Code: ---Public Function AdjustDays(StartDate as Variant, Days2Add as Integer) as Variant
      AdjustDays = CDat(DateNumber(Year(StartDate),Month(StartDate),Day(StartDate) + Days2Add ) + TimeNumber(Hour(StartDate), Minute(StartDate), Second(StartDate)))
End Function
--- Ende Code ---

@Andreas: Der Beiweis wurde hier http://www.jnotes.de/jnotes/JRIK-8J5RZS erbracht. Im "kleinen" Umfang natürlich kein großer Unterschied aber bei einigen Tausend Dokumente ist es auf jeden Fall spürbar.

--- Ende Zitat ---

Der Link ist gut und da wird auch der Vorteil von NotesDateTime sichtbar:
Weil das NotesDateTime-Objekt intern alle Datums- und Zeitangaben auf UTC umrechnet

Das mit dem Performancenachteil, wenn sowas auf sehr viele Dokumente angewendet wird, erscheint plausibel. Das wäre dann in einem solchen Fall zu prüfen.

Anfreas

khing:
So, habe den Fehler gefunden! Es war ein Fehler in der Berechnung von meiner eigentlichen Funktion. Das Jahr war nicht 2014, sondern 2114  :o :o :o - Das muss man erstmal im dem Zahlenchaos finden  ::)
Irgendwie hatte ich am Anfang die Werte negiert mit "Wert* -1" und da kam dann sehr viel komische Sachen raus. Habt vielen Dank für eure Hilfe.

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln