Hm, interessantes Thema. Obwohl ich auch noch nicht den Sinn gefunden habe, mit NotesDateTime zu arbeiten, habe ich mal etwas experimentiert, wie man es hinbekommt, ein neues NotesDateTime auf Basis eines anderen zu kreieren, ohne die Zeit als String zu übergeben. Das ist dabei herausgekommen, geht bestimmt noch etwas eleganter, aber funktioniert. Wird einen Überlauf bei mehr als 32000 Tagen Differenz bringen, soll aber auch nur die Möglichkeit aufzeigen. Schick machen kann es sich derjenige, der sowas tatsächlich braucht.
Option Public
Option Declare
Sub Initialize
Dim StartDate As New NotesDateTime ("")
Call StartDate.SetNow ()
Call StartDate.AdjustDay (1)
Dim tmpDate As NotesDateTime
Set tmpDate = KloneDateTime (StartDate)
MsgBox StartDate.LocalTime, 64, tmpDate.LocalTime
Call tmpDate.AdjustDay (2)
MsgBox StartDate.LocalTime, 64, tmpDate.LocalTime
End Sub
Function KloneDateTime (dt As NotesDateTime) As NotesDateTime
Dim kdt As New NotesDateTime ("")
Call kdt.SetNow ()
Dim td As Double
Dim s As Integer
Dim m As Integer
Dim h As Integer
td = dt.TimeDifferenceDouble (kdt)
s = td Mod 60
Call kdt.AdjustSecond (s)
td = (td - s) / 60
m = td Mod 60
Call kdt.AdjustMinute (s)
td = (td - m) / 60
h = td Mod 60
Call kdt.AdjustHour (h)
td = td - h
Call kdt.AdjustDay (td / 24)
Set KloneDateTime = kdt
End Function
EDIT: Das wird so noch nicht ganz klappen. Wenn am Ende bei td / 24 etwas Krummes herauskommt, knallt es. Stecke da aber jetzt nicht mehr Energie rein, ist ja nur ein Denkanstoß ...
EDIT 2: Das passt auch an anderer Stelle noch nicht, irgendwo laufen die Minuten auseinander, wenn die Differenz unglücklich ist. Schluss jetzt damit, da müsste wohl mal ein Mathematiker ran ...