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
Last revision Both sides next revision
vba:cast:strtodate [05.10.2015 09:21:17]
yaslaw
vba:cast:strtodate [28.04.2017 09:22:36]
yaslaw
Line 1: Line 1:
 <​const>​ <​const>​
-    version=2.3.2 +    version=2.5.0 
-    vdate=29.09.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 54: Line 55:
 | yy  | zweistelliges oder vierstelliges Jahr | | yy  | zweistelliges oder vierstelliges Jahr |
 | yyyy  | vierstelliges Jahr | | yyyy  | vierstelliges Jahr |
 +| q | QuartalAnfang (1.1.x - 1.10.x) |
 +| qq | QuartalEnde ​  ​(31.3.x - 31.12.x)|
 | h | Stunden ohne führende Null(0-24) | | h | Stunden ohne führende Null(0-24) |
 | hh  | Stunden mit führende Null(00-24) | | hh  | Stunden mit führende Null(00-24) |
Line 109: Line 112:
 'nur die Zeit 'nur die Zeit
 print_r strToDate("​17:​6:​65",​ "​h:​n:​s"​) print_r strToDate("​17:​6:​65",​ "​h:​n:​s"​)
-<​Date>​ 17:​07:​05</​code>​+<​Date>​ 17:07:05 
 + 
 +'​Quartalsanfang 
 +print_r strToDate("​Q3 2015", "\QQ YYYY"​) 
 +<​Date>​ 01.07.2015 
 + 
 +'Und das Quartalsende 
 +print_r strToDate("​Q3 2015", "\QQQ YYYY"​) 
 +<​Date>​ 30.09.2015 
 +</​code>​ 
 + 
 +=== abc === 
 +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.txt · Last modified: 28.04.2017 09:33:17 by yaslaw