This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
vba:cast:strtodate [17.11.2015 16:29:30] yaslaw |
vba:cast:strtodate [28.04.2017 09:33:17] (current) yaslaw |
||
---|---|---|---|
Line 1: | Line 1: | ||
<const> | <const> | ||
- | version=2.4.0 | + | version=2.5.0 |
- | vdate=17.11.2015 | + | vdate=15.03.2016 |
fname=cast_strtodate.bas | fname=cast_strtodate.bas | ||
ns=%NAMESPACE% | ns=%NAMESPACE% | ||
Line 44: | Line 44: | ||
tdtExtractDate = 2 ^ 1 'Der String beimnhaltet vor oder nach dem Datum noch andere Werte. Das Datum wird extrahiert | tdtExtractDate = 2 ^ 1 'Der String beimnhaltet vor oder nach dem Datum noch andere Werte. Das Datum wird extrahiert | ||
tdtIgnoreError = 2 ^ 2 'Fehler werden ignoriert. Im Fehlerfall wird NULL zurückgegeben | tdtIgnoreError = 2 ^ 2 'Fehler werden ignoriert. Im Fehlerfall wird NULL zurückgegeben | ||
+ | tdtFomat2 = 2 ^ 3 'Es handelt sich um ein Format im Stil von {$DD}.{$MM} | ||
End Enum</code> | End Enum</code> | ||
Line 121: | Line 122: | ||
<Date> 30.09.2015 | <Date> 30.09.2015 | ||
</code> | </code> | ||
+ | |||
+ | === Länder Formatchaos === | ||
+ | Ein Datum kann je nach Land unterschiedlich geschrieben werden. Dass kann zu Fehler führen. Nehmen wir das Amerikanische Format MM/DD/YYYY. In der Schweiz und in Deutschland haben wir DD.MM.YYYY. VBA nimmt die Ländereinstellung vom PC-Profil. Wenn der Tag kleiner oder gleich 12 ist, dann haben wir ein Problem. Dann erkennt VBA den Tag als Monat und das Resultat ist Falsch. | ||
+ | \\ Als Beispiel der 5. Januar 2017. Im Amerikanischen Format 01/05/2017. cDate mit Schweizer Einstellung macht daraus den 1. Mai 2017. | ||
+ | <code vb>'Einfacher cDate. Der Tag ist Kleinergleich als 12. Das Resultat ist falsch | ||
+ | print_r cDate("01/05/2017") | ||
+ | <Date> 01.05.2017 | ||
+ | |||
+ | 'Wenn die zweite Position über 12 ist, erkennt VBA, dass es sich um den Tag handeln muss | ||
+ | print_r cDate("01/15/2017") | ||
+ | <Date> 15.01.2017 | ||
+ | |||
+ | |||
+ | 'Mit strToDate und einem definierten Format wird das Datum richtig umgesetzt | ||
+ | print_r strToDate("01/05/2017", "MM/DD/YYYY") | ||
+ | <Date> 05.01.2017</code> | ||
=== Unklare Formate === | === Unklare Formate === |