Domino 9 und frühere Versionen > ND8: Entwicklung
Variablenzuweisung
gstueb:
--- Zitat von: oxyd21 am 02.12.10 - 10:56:21 ---Wie setze ich elegant den temporären Wert, damit der Ausgangswert nicht geändert wird.
--- Code: ---Dim datTempDate As NotesDateTime
Set datTempDate = StartDate
Call datTempDate.Adjustday(intActualDay, True)
--- Ende Code ---
VG, Michael
--- Ende Zitat ---
Da ich gerade genau das gleiche Problem habe: Wie könnte denn eine sichere Lösung aussehen?
Unter welchen Umständen kann
--- Code: ---Dim datTempDate As NotesDateTime
Set datTempDate = New NotesDateTime(StartDate.LocalTime)
--- Ende Code ---
zu Problemen führen?
Gruß,
Gregor
koehlerbv:
Wozu verwendest Du hier überhaupt die NotesDateTime-Klasse mit diesen Nachteilen? Was willst Du erreichen, Gregor?
Bernhard
PS: Warst Du nicht in meinem Vortrag "Notes und die Zeit"?
gstueb:
Hallo Bernhard,
ich war leider nicht auf Deinem Vortrag "Notes und die Zeit", ich hab' mich aber schon relativ ausführlich mit dem Thema beschäftigt. Ich hätte tatsächlich genauso gut (oder leichter) das einfache Datumsformat, welches intern als Double abgelegt wird, verwenden können.
Ich hab' mich aber trotzdem und bewusst für die NotesDateTime Klasse entschieden, einfach weil ich im Umgang damit noch einiges lernen kann.
Gruß,
Gregor
Peter Klett:
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.
--- Code: ---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
--- Ende Code ---
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 ...
Glombi:
NotesDateTime erwartet zwar (laut Doku) einen String, kann aber auch mit anderen Datentypen umgehen. Bspw. liefert folgender Code 4 mal das gleiche Ergebnis:
Dim ndt As NotesDateTime
Dim ndt1 As NotesDateTime
Dim ndt2 As NotesDateTime
Dim ndt3 As NotesDateTime
Set ndt = New NotesDateTime( Today )
Call ndt.AdjustDay(1)
Set ndt1 = New NotesDateTime( ndt.LSLocalTime )
Set ndt2 = New NotesDateTime( ndt.LocalTime )
Set ndt3 = New NotesDateTime( Datenumber(2012,10,13) )
Msgbox ndt.LocalTime & " " & ndt1.LocalTime & " " & ndt2.LocalTime & " " & ndt3.LocalTime
Andreas
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln