User Tools

Site Tools


vba:cast:strtodate

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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 ===
vba/cast/strtodate.1447774170.txt.gz · Last modified: 17.11.2015 16:29:30 by yaslaw