Domino 9 und frühere Versionen > Entwicklung

Datumsproblem

(1/6) > >>

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