Domino 9 und frühere Versionen > ND8: Entwicklung

NotesDateTime.adjustMonth

(1/3) > >>

Dubidu:
Hallo,
ich habe hier das komische Verhalten, dass Notes 31.05.2007 00:00 Uhr als Ergebnis liefert und nicht 01.06.2007 00:00 Uhr.


--- Code: ---Dim ndt As New NotesDateTime("01.05.2007 00:00")

Call ndt.AdjustMonth(1)

Msgbox ndt.LSLocalTime
--- Ende Code ---

Selbst wenn ich das folgend abändere, erhalte ich immernoch den letzten Tag des Mais als Ergebnis:


--- Code: ---Dim ndt As New NotesDateTime("01.05.2007 00:59")
--- Ende Code ---

Kann sich das jemand erklären?! Ist das normal? Wie kann ich dieses Verhalten umgehen?!

Liebe Grüße
Giordano

koehlerbv:
Könnte Dir dieser aktuelle Thread aus dem DominForum helfen?

Die NotesDateTime-Klasse ist eh meist überbewertet bzw. unnötig. Du kannst auch simpel mit der Datumsseriennummer rechnen:

--- Code: --- Dim vStart As Variant

vStart = Datenumber (2010, 12, 1)

Messagebox Datenumber (Year (vStart), Month (vStart) + 1, 1)
--- Ende Code ---

Du siehst, das funktioniert sogar im Dezember  ;)

Bernhard

BigWim:
Hallo Bernhard


--- Zitat ---Du siehst, das funktioniert sogar im Dezember 

--- Ende Zitat ---
Nimmst Du das nur hin, frei nach dem Motto: "Probieren geht über Studieren", oder weißt Du, warum das funktioniert?

Eigentlich dürfte das doch gar nicht funktionieren ???

Egal (für mich) ob ich jetzt von links nach rechts oder von rechts nach links die Ausdrücke auflöse, dürften die Ausdrücke Year ... und Month nichts von einander wissen; und der Wert vStart wird ja gar nicht erhöht, sondern nur temporär bei der Auswertung des Ausdrucks Month, und warum weiß Year davon ...

Selbst wenn ich die "Klammer"regel anwende, fände ich es unlogisch. Da es funktioniert (habe es ausprobiert, weil ich es nicht glauben konnte), kann es ja nur bedeuten, dass innerhalb der Klammer von Datenumber von rechts nach links aufgelöst, aber der temporäre Wert vStart die ganze Zeit beigehalten wird.

Komme darauf, weil

--- Code: --- Dim vStart As Variant
vStart = Datenumber (2010, 12, 1)
Messagebox Datenumber (Year (vStart)+2, Month (vStart) + 1, 1)

--- Ende Code ---
das Datum 1.1.2013 auswirft O0

Also, wenn Du mir einen Tipp geben könntest, welche Regel hier greift, dann könnte ich meine Neugierde befriedigen ....

Danke
Markus

Dubidu:

--- Zitat von: koehlerbv am 10.06.10 - 17:48:16 ---Könnte Dir dieser aktuelle Thread aus dem DominForum helfen?

Die NotesDateTime-Klasse ist eh meist überbewertet bzw. unnötig. Du kannst auch simpel mit der Datumsseriennummer rechnen:

--- Code: --- Dim vStart As Variant

vStart = Datenumber (2010, 12, 1)

Messagebox Datenumber (Year (vStart), Month (vStart) + 1, 1)
--- Ende Code ---

Du siehst, das funktioniert sogar im Dezember  ;)

Bernhard

--- Ende Zitat ---

Danke, netter Workaround, aber wie kann ich in deinem Beispiel die Uhrzeit einbinden?!

EDIT: Habe das nun mit CDat gelöst.

Liebe Grüße
Giordano

koehlerbv:
Wie das genau programmiert wurde, weiss ich leider auch nicht, aber eine gewisse "Intelligenz" oder "Fehlertoleranz" wurde dem Code ganz gewiss mitgegeben: Monat #13 gibt es nicht, ergo ist es der folgende Monat 1.

Zudem ist das Datum ja nichts weiter als eine Zahl, die erst durch die Konvertierung wie beispielsweise nach String durch Messagebox wieder in ein für uns erkennbares Format gebracht wird.

Leichter verständlich wird dies m.E. durch solchen einen Term:
Messagebox Datenumber (2010, 6, 1 + 30)

Bernhard

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln