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 ...