Domino 9 und frühere Versionen > Entwicklung
Datumsproblem
robertpp:
Ich hab vor kurzen von eknori ein Srcipt für ein logging bekommen nur gibt es da ein problem!
Es wir mit:
Dim item3 As New NotesItem(newdoc, LogDateField, Format(Date$, "dd/mm/yyyy"))
das feld gefüllt aber ich bekomme immer als ergebnis das: "31.12.9999"
Was ist da falsch???
Ich glaube aber das es mit einem Englischen Notes funktioniert.
Da gibt er "12/08/2003" aus.
Ich hab schon probiert ob das Feld "LogDateField" ein Datumsfeld sein muss das ist glaube ich aber egal.
Was macht der befehl "Format(Date$, "dd/mm/yyyy")" überhaupt?
Es wird auch vorher das verwendet:
Set temp = doc.GetFirstItem(LogDateField)
If temp.text = Format(Date$,"dd/mm/yyyy") Then
LogExists = -1
Else
Set doc = View.GetPrevDocument(doc)
End If
danke robert
Glombi:
Hi,
was steht denn in Date$ drin?
Eine Beschreibung zu Format findest Du in der Designer Hilfe. Dort steht eigentlich alles drin, was man zum Notes-Leben so braucht ;)
Andreas
ata:
... in der deutschen Version kann er mit dieser Eingabe vermutlich nichts anfangen - nimm das Datum mal mit Punkten als Trennzeichen...
... um ganz sicher zu gehen, schau die mal die Klasse
NotesInternational
... an. Dort kannst du die Einstellungen zum aktuellen Datumsformat und den Datumstrenner erfahren. Damit würde ich das Datum dann formatieren...
ata
ata:
... aus der aktuellen Bearbeitung des DateHandling - demnächst aktualisiert auf meiner Homepage...
--- Code: ---Function FormatDatum( sDatum As String ) As String
' # ata - Formatiert das Datum gemäß den Ländereinstellungen
' # sDatum beinhaltet einen Datumsstring - z.B. "28.3.03"
' # => Rückgabe als String
' # ... Format a Date to international convention
Dim session As New NotesSession
Dim international As NotesInternational
Dim Jahr As Integer
Dim Monat As Integer
Dim Tag As Integer
Dim sMonat As String
Dim sTag As String
'
Jahr = Year(Datevalue(sDatum))
Monat = Month(Datevalue(sDatum))
Tag = Day(Datevalue(sDatum))
sMonat = Cstr(Monat)
sTag = Cstr(Tag)
' # Korrektur des Formates mit führender Null, falls erforderlich
If Monat < 10 Then sMonat = "0" + Cstr(Monat)
If Tag < 10 Then sTag = "0" + Cstr(Tag)
'
Set international = session.International
If international.IsDateDMY Then
FormatDatum = sTag + international.DateSep + sMonat + international.DateSep + Ltrim$(Cstr(Jahr))
Elseif international.IsDateMDY Then
FormatDatum = sMonat + international.DateSep + sTag + international.DateSep + Ltrim$(Cstr(Jahr))
Elseif international.IsDateYMD Then
FormatDatum = Ltrim$(Cstr(Jahr)) + international.DateSep + sMonat + international.DateSep + sTag
End If
End Function
--- Ende Code ---
ata
Glombi:
Hi ata,
lt. Hilfe macht "/" das:
Date separator. Separates day, month, and year in formatted date values. The actual date separator used in the returned formatted value is the date separator specified in the operating system's international settings.
Ich trau dem ganzen aber auch nicht so recht. Besser wäre, das ganze anders so programmieren, denn Vergleich zweier Datumswerte über deren String-Repräsentation halte ich nicht für so gut. Da gibt es zu viele Unwägbarkeiten.
Es geht ja wohl nur darum zu prüfen, ob für das Datum bereits ein Log-Eintrag da ist.
Da kann man dann auch mit TimeDifference hinkriegen und das ganze bspw. als GMT Zeit vergleichen. Dann klappt's auch mit verschiedenen Zeitzonen.
Andreas
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln