;=============================================================================== ; GUI zum Funktionstest ;=============================================================================== ;#include ;GuiCreate("Test Konvertierung", 392, 230,(@DesktopWidth-392)/2, (@DesktopHeight-230)/2 ) ; ;$Button_1 = GuiCtrlCreateButton("Konvertieren", 230, 170, 130, 40) ;$Check_6 = GUICtrlCreateCheckbox("optionale Ausgabe", 50, 180, 150, 20) ;$Input_2 = GuiCtrlCreateInput("", 230, 35, 130, 20) ;GUICtrlSetState(-1,$GUI_FOCUS) ;$Label_3 = GuiCtrlCreateLabel("Eingabe Datum:", 73, 40, 80, 20) ;$Label_4 = GuiCtrlCreateLabel("Konvertiertes Datum:", 50, 100, 100, 20) ;$Label_5 = GuiCtrlCreateLabel("", 180, 100, 180, 20) ; ;GuiSetState() ;While 1 ; $msg = GuiGetMsg() ; If GUICtrlRead($Check_6) = 1 Then ; If $msg = $Button_1 Then ; GUICtrlSetData($Label_5,_MultiDateToNorm(GUICtrlRead($Input_2),1)) ; EndIf ; Else ; If $msg = $Button_1 Then ; GUICtrlSetData($Label_5,_MultiDateToNorm(GUICtrlRead($Input_2))) ; EndIf ; EndIf ; Select ; Case $msg = $GUI_EVENT_CLOSE ; ExitLoop ; EndSelect ;WEnd ;Exit ;=============================================================================== ; End GUI ;=============================================================================== ;=============================================================================== ; ; Function Name: _MultiDateToNorm() ; ; Description: Konvertiert folgende Datumsformate: ; (T)T.(M)M.(JJ)JJ (deutsch) ; (M)M/(T)T/(JJ)JJ (amerikanisch) ; (T)T-Mon-(JJ)JJ (amerikanisch, lang) ; ; Syntax: _MultiDateToNorm($date,[$s_sort]) ; ; Parameter: $date - zu konvertierendes Datum in einem der angeführten Formate ; optional: ; $s_sort - Vorgabe = 0 (inaktiv); 1 für Ausgabe sortierbarer String ; ; Return Value: (TT.MM.JJJJ); optional (JJJJ-MM-TT) ; ; Author: BugFix (bug_fix@web.de) ; ;=============================================================================== Func _MultiDateToNorm($date,$s_sort = 0) If StringMid($date,2,1) = "." Then ; Tag dt. einstellig ? $date = "0" & $date ; Vornull Tag EndIf If StringMid($date,2,1) = "/" Then ; Monat amerik. einstellig ? $date = "0" & $date ; Vornull Monat EndIf If StringMid($date,2,1) = "-" Then ; Tag amerik. lang einstellig ? $date = "0" & $date ; Vornull Tag EndIf If StringMid($date,5,1) = "." Then ; Monat dt. einstellig ? $tmp = StringTrimLeft($date,3) $date = StringLeft($date,3) & "0" & $tmp ; Vornull Monat EndIf If StringMid($date,5,1) = "/" Then ; Tag amerik. einstellig ? $tmp = StringTrimLeft($date,3) $date = StringLeft($date,3) & "0" & $tmp ; Vornull Tag EndIf If StringLen($date) = 8 Or StringLen($date) = 9 Then ; Jahr 2-stellig ? $strJJ = StringRight($date,2) ; Zeichen für Jahr selektieren $date = StringTrimRight($date,2) ; beide Zeichen für Jahr abschneiden If $strJJ < 30 Then $strJH = "20" ; 00 bis 29 sind 20.. Else $strJH = "19" ; 30 bis 99 sind 19.. EndIf $date = $date & $strJH & $strJJ ; Jahr jetzt 4-stellig EndIf Select Case StringMid($date,3,1) = "/" ; amerik. Format "MM/TT/JJJJ" ? $strMM = StringLeft($date,2) $strTT = StringMid($date, 4,2) $date = $strTT & "." & $strMM & "." & StringRight($date,4) Case StringMid($date,3,1) = "-" ;amerik. Format "TT-Mon-JJJJ" ? $strTT = StringLeft($date,2) $strMM = StringUpper(stringmid($date,4,3)) Select Case $strMM = "JAN" $strMM = "01" Case $strMM = "FEB" $strMM = "02" Case $strMM = "MAR" $strMM = "03" Case $strMM = "APR" $strMM = "04" Case $strMM = "MAY" $strMM = "05" Case $strMM = "JUN" $strMM = "06" Case $strMM = "JUL" $strMM = "07" Case $strMM = "AUG" $strMM = "08" Case $strMM = "SEP" $strMM = "09" Case $strMM = "OCT" $strMM = "10" Case $strMM = "NOV" $strMM = "11" Case $strMM = "DEC" $strMM = "12" EndSelect $date = $strTT & "." & $strMM & "." & StringRight($date,4) EndSelect If $s_sort = 1 Then ; Optionsschalter gesetzt ? $date = StringRight($date,4) & "-" & StringMid($date,4,2) & "-" & StringMid($date,1,2) ; als sortierbarer String EndIf Return $date EndFunc ;==>_MultiDateToNorm()