Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
hhm
Anmeldungsdatum: 28.04.2010 Beiträge: 8
|
Verfasst am: 06.05.2010, 17:36 Titel: Bug in Day( date_serial )? |
|
|
Die Funktion Day(date_serial) gibt den Vortag an.
Rechnet man mit Day(date_serial +1) bekommt man meist ein richtiges Ergebnis, für den Monatsletzten jedoch stets 31. Auf den 27 Februar folgt also der 31. usw.
Weiß jemand mehr darüber? |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 06.05.2010, 17:47 Titel: |
|
|
Code: | #Include "vbcompat.bi"
Print Day(Now)
Sleep
|
Das gibt mir (heute) 6 aus, also richtig. |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 06.05.2010, 22:46 Titel: |
|
|
Hi,
Die Funktion Day(DateSerial(Jahr,Monat,Tag)) gibt den aktuellen Tag an.
Nicht den Vortag!
Z.B.
Code: | #INCLUDE "vbcompat.bi"
PRINT DAY(DateSerial(2010, 2, 28) + 1)
SLEEP | gibt als Folgetag des 28.02.2010 den 1. an. Also OK.
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
hhm
Anmeldungsdatum: 28.04.2010 Beiträge: 8
|
Verfasst am: 07.05.2010, 10:57 Titel: |
|
|
Alles klar!
Das Problem liegt in der Format-Funktion:
Code: |
Format(Day(serial_date), "dd")
|
liefert ein falsches Ergebnis.
Es muß heißen:
Code: | Format(serial_date, "dd") |
|
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 07.05.2010, 12:53 Titel: |
|
|
hhm hat Folgendes geschrieben: | Alles klar!
Das Problem liegt in der Format-Funktion:
Code: |
Format(Day(serial_date), "dd")
|
liefert ein falsches Ergebnis.
Es muß heißen:
Code: | Format(serial_date, "dd") |
|
Die Problemlösung ist zwar richtig, aber das ist kein Fehler der Format-Funktion! Wenn du von FORMAT ein Datum formatieren lässt (Formatierungsplatzhalter "dd"), musst du auch ein Datum als zu formatierenden Wert übergeben und nicht nur eine Zahl von 1 bis 31, was aber von DAY als Rückgabe erzeugt wird.
Das folgende Beispiel zeigt, welches Datum sich z. B. hinter dem FB-Zeitstempel 7 verbirgt und wie das heutige Datum als Zeitstempel aussieht:
Code: | #include "vbcompat.bi"
Dim As Double ZeitpunktA = 40305.53113425926, _
ZeitpunktB = 7
Print "Formatieren von ZeitpunktA (= ca. " & INT(ZeitpunktA) & "):"
Print
Print "Tag des Monats: " & Format(ZeitpunktA,"dd")
Print Format(ZeitpunktA,"dd.mm.yyyy")
Print Format(ZeitpunktA,"ddddd")
Print Format(ZeitpunktA,"dd.mm.yy hh:mm:ss")
Print "Wochentag: " & Weekday(ZeitpunktA) & " (" & WeekdayName(Weekday(ZeitpunktA)) & ")"
Print
Print
Print "Jetzt ZeitpunktB (= " & ZeitpunktB & ") formatieren:"
Print
Print "Tag des Monats: " & Format(ZeitpunktB,"dd")
Print Format(ZeitpunktB,"dd.mm.yyyy")
Print Format(ZeitpunktB,"ddddd")
Print Format(ZeitpunktB,"dd.mm.yy hh:mm:ss")
Print "Wochentag: " & Weekday(ZeitpunktB) & " (" & WeekdayName(Weekday(ZeitpunktB)) & ")"
Sleep |
_________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
|