Преобразование строки в дату - VB
Формулировка задачи:
Код:
будет 9-е декабря. Есть ли в VB, VBA, VBS четкая установка формата даты?
P.S. Региональные настройки в ОС никак не влияют. Пробовал.
Результатом преобразования Trim(CDate("09 12 2008 12:24:26"))
будет 9-е декабря. Есть ли в VB, VBA, VBS четкая установка формата даты?
P.S. Региональные настройки в ОС никак не влияют. Пробовал.
Решение задачи: «Преобразование строки в дату»
textual
Листинг программы
<font color="blue">Public</font> <font color="blue">Sub</font> Main() Debug.<font color="blue">Print</font> Format$(CDateEx(<font color="teal">"Sep 16 2008 18:40:07"</font>, <font color="teal">"mdy"</font>), <font color="teal">"d.m.yyyy hh:nn:ss"</font>) Debug.<font color="blue">Print</font> Format$(CDateEx(<font color="teal">"17 9 2008 18:40:07"</font>, <font color="teal">"dmy"</font>), <font color="teal">"d.m.yyyy hh:nn:ss"</font>) Debug.<font color="blue">Print</font> Format$(CDateEx(<font color="teal">"18-2008-Sep 18:40:07"</font>, <font color="teal">"dym"</font>), <font color="teal">"d.m.yyyy hh:nn:ss"</font>) Debug.<font color="blue">Print</font> Format$(CDateEx(<font color="teal">"2008/sep/8 18:40:07"</font>, <font color="teal">"ymd"</font>), <font color="teal">"d.m.yyyy hh:nn:ss"</font>) <font color="blue">End</font> <font color="blue">Sub</font> <font color="blue">Public</font> <font color="blue">Function</font> CDateEx(ss <font color="blue">As</font> <font color="blue">String</font>, Optional <font color="blue">ByVal</font> ymd <font color="blue">As</font> <font color="blue">String</font> = <font color="teal">"ymd"</font>) <font color="blue">As</font> <font color="blue">Date</font> <font color="blue">Dim</font> i <font color="blue">As</font> <font color="blue">Integer</font>, st <font color="blue">As</font> <font color="blue">String</font>, sd <font color="blue">As</font> <font color="blue">String</font>, v <font color="blue">As</font> Variant, s <font color="blue">As</font> <font color="blue">String</font>, k <font color="blue">As</font> <font color="blue">Integer</font>, _ m <font color="blue">As</font> <font color="blue">Integer</font>, d <font color="blue">As</font> <font color="blue">Integer</font>, y <font color="blue">As</font> <font color="blue">Integer</font>, j <font color="blue">As</font> <font color="blue">Integer</font> ymd = LCase$(ymd) i = InStrRev(ss, <font color="teal">" "</font>) <font color="blue">If</font> i <font color="blue">Then</font> st = <font color="blue">Mid</font>$(ss, i) ss = Trim$(Left$(ss, i - <font color="darkblue"><b>1</b></font>)) <font color="blue">End</font> <font color="blue">If</font> ss = Replace(ss, <font color="teal">"-"</font>, <font color="teal">" "</font>) ss = Replace(ss, <font color="teal">"/"</font>, <font color="teal">" "</font>) ss = Replace(ss, <font color="teal">"."</font>, <font color="teal">" "</font>) v = Split(ss, <font color="teal">" "</font>) <font color="blue">On</font> <font color="blue">Error</font> <font color="blue">GoTo</font> Err_ <font color="blue">For</font> i = <font color="darkblue"><b>0</b></font> <font color="blue">To</font> UBound(v) s = v(i) <font color="blue">If</font> Len(s) <font color="blue">Then</font> k = k + <font color="darkblue"><b>1</b></font> <font color="blue">If</font> k = <font color="darkblue"><b>4</b></font> <font color="blue">Then</font> <font color="blue">GoTo</font> Err_ <font color="blue">Select</font> <font color="blue">Case</font> <font color="blue">Mid</font>$(ymd, k, <font color="darkblue"><b>1</b></font>) <font color="blue">Case</font> <font color="teal">"d"</font> <font color="blue">If</font> IsNumeric(s) <font color="blue">Then</font> d = CInt(s) <font color="blue">If</font> d < <font color="darkblue"><b>1</b></font> <font color="blue">Or</font> d > <font color="darkblue"><b>31</b></font> <font color="blue">Then</font> <font color="blue">GoTo</font> Err_ <font color="blue">End</font> <font color="blue">If</font> <font color="blue">Case</font> <font color="teal">"m"</font> <font color="blue">If</font> IsNumeric(s) <font color="blue">Then</font> m = CInt(s) <font color="blue">If</font> m < <font color="darkblue"><b>1</b></font> <font color="blue">Or</font> m > <font color="darkblue"><b>12</b></font> <font color="blue">Then</font> <font color="blue">GoTo</font> Err_ <font color="blue">Else</font> s = LCase(Left$(s, <font color="darkblue"><b>3</b></font>)) <font color="blue">For</font> j = <font color="darkblue"><b>1</b></font> <font color="blue">To</font> <font color="darkblue"><b>34</b></font> <font color="blue">Step</font> <font color="darkblue"><b>3</b></font> <font color="blue">If</font> s = <font color="blue">Mid</font>$(<font color="teal">"janfebmaraprmayjunjulaugsepoctnovdec"</font>, j, <font color="darkblue"><b>3</b></font>) <font color="blue">Then</font> m = (j + <font color="darkblue"><b>2</b></font>) / <font color="darkblue"><b>3</b></font>: <font color="blue">Exit</font> <font color="blue">For</font> <font color="blue">End</font> <font color="blue">If</font> <font color="blue">Next</font> j <font color="blue">End</font> <font color="blue">If</font> <font color="blue">If</font> m = <font color="darkblue"><b>0</b></font> <font color="blue">Then</font> <font color="blue">GoTo</font> Err_ <font color="blue">Case</font> <font color="teal">"y"</font> <font color="blue">If</font> IsNumeric(s) <font color="blue">Then</font> y = CInt(s) <font color="blue">End</font> <font color="blue">Select</font> <font color="blue">End</font> <font color="blue">If</font> <font color="blue">Next</font> i CDateEx = CDate(Format$(DateSerial(y, m, d), <font color="teal">"yyyy-mm-dd"</font>) & <font color="teal">" "</font> & st) <font color="blue">Exit</font> <font color="blue">Function</font> Err_: Err.Raise <font color="darkblue"><b>513</b></font>, , <font color="teal">"Строка с датой содержит ошибку"</font> <font color="blue">End</font> <font color="blue">Function</font>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д