This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
vba:cast:strtodate [28.04.2017 09:13:38] yaslaw |
vba:cast:strtodate [28.04.2017 09:33:17] (current) yaslaw |
||
---|---|---|---|
Line 122: | 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 === |