' Преобразует дату в формате, определённов в параметре DateFormatIn в дату в формате DateFormatOut ' Название месяца автоматически преобразуется в русский эквивалент. ' Элементы даты обязательно должны быть разделены между собой. ' ' Параметры: ' DateToConvert - строка с датой, которую необходимо преобразовать ' DateFormatIn - строка с шаблоном даты, коорую необходимо преобразовать ' DateFormatOut - строка с шаблоном преобразованной даты ' Переменные для шаблона: ' Y - год ' M - месяц ' D - день ' H - часы ' h - часы БЕЗ лидирующего нуля. Только для выходного формата. ' m - минуты ' a - AM/PM. Только для входного формата ' ' Пример использования: ' DateConvert("Nov 4, 2010 02:05 AM","M D, Y H:m a","Y-M-D H:m") выдаст результат: 2010-Ноя-4 02:05 ' DateConvert("Nov 4, 2010 12:05 PM","M D, Y H:m a","H:m") выдаст результат: 12:05 ' DateConvert("Nov4, 2010 12:05 PM","MD, Y H:m a","H:m") неправильный синтаксис - нет разделителя между M и D ' ' (C) Департамент ИТ, 2011 Function DateConvert(DateToConvert As String, DateFormatIn As String, DateFormatOut As String) DateFormatIn = DateFormatIn & " " DateFormatOut = DateFormatOut & " " DateToConvert = DateToConvert & " " i = 1 DateFormatIn = DateFormatIn & " " Do While i < Len(DateFormatIn) + 1 t_extr = Mid(DateFormatIn, i, 1) If Trim(t_extr) > "" Then t_sep = Mid(DateFormatIn, i + 1, 1) t_pos = InStr(DateToConvert, t_sep) If t_pos > 0 Then t_extr2 = Trim(Mid(DateToConvert, 1, t_pos - 1)) t_drop = 0 Select Case t_extr Case "M" t_month = t_extr2 Case "Y" t_year = t_extr2 Case "D" t_day = t_extr2 Case "H" t_hour = t_extr2 Case "m" t_minutes = t_extr2 Case "s" t_seconds = t_extr2 Case "a" t_am = t_extr2 Case Else t_drop = 1 End Select If t_drop = 0 Then DateToConvert = LTrim((Right(DateToConvert, Len(DateToConvert) - InStr(1, DateToConvert, t_sep)))) End If End If i = i + 1 Loop If t_am = "PM" Then t_hour = t_hour + 12 If t_hour > 23 Then t_hour = t_hour - 12 DateToConvert = "" i = 1 Do While i < Len(DateFormatOut) + 1 t_extr = Mid(DateFormatOut, i, 1) Select Case t_extr Case "M" DateToConvert = DateToConvert & t_month Case "Y" DateToConvert = DateToConvert & t_year Case "D" DateToConvert = DateToConvert & t_day Case "H" If Len(t_hour) = 1 Then DateToConvert = DateToConvert & "0" & t_hour Else DateToConvert = DateToConvert & t_hour Case "h" DateToConvert = DateToConvert & t_hour Case "m" DateToConvert = DateToConvert & t_minutes Case "s" DateToConvert = DateToConvert & t_seconds Case Else DateToConvert = DateToConvert & t_extr End Select i = i + 1 Loop If t_month <> "" Then tmpstring = "Январь,Февраль,Март,Апрель,Май,Июнь,Июль,Август,Сентябрь,Октябрь,Ноябрь,Декабрь" MonthRuslong = Split(tmpstring, ",") tmpstring = "Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Ноя,Дек" MonthRusShort = Split(tmpstring, ",") tmpstring = "January,February,March,April,May,June,July,August,September,October,November,December" MonthEnglong = Split(tmpstring, ",") tmpstring = "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec" MonthEngShort = Split(tmpstring, ",") For i = 0 To UBound(MonthEnglong) l = InStr(1, DateToConvert, MonthEnglong(i), vbTextCompare) If l > 0 Then tmpstr1 = Left(DateToConvert, l - 1) tmpstr2 = Right(DateToConvert, Len(DateToConvert) - l - Len(MonthEnglong(i)) + 1) DateToConvert = tmpstr1 & MonthRuslong(i) & tmpstr2 End If Next For i = 0 To UBound(MonthEngShort) l = InStr(1, DateToConvert, MonthEngShort(i), vbTextCompare) If l > 0 Then tmpstr1 = Left(DateToConvert, l - 1) tmpstr2 = Right(DateToConvert, Len(DateToConvert) - l - Len(MonthEngShort(i)) + 1) DateToConvert = tmpstr1 & MonthRusShort(i) & tmpstr2 End If Next End If DateConvert = DateToConvert End Function