MyTetra Share
Делитесь знаниями!
басурманский формат даты
Время создания: 31.07.2019 22:37
Текстовые метки: басурманский формат даты
Раздел: Разные закладки - VBA
Запись: xintrea/mytetra_db_adgaver_new/master/base/1530084845h3sxoa8jvl/text.html на raw.githubusercontent.com

'================================================================================

'##### Преобразует дату в басурманский формат

'

'Sub test_FnDateRu_En()

' strDate = "7/18/2031"

'' strDateNew = FnDateRu_En(strDate)

' strDateNew = FnDateEn_Ru(strDate)

'End Sub

'--------------------------------------------------------------------------------

Function FnDateRu_En(ByVal strDate As String) As String

If Len(strDate) = 0 Then strDate = Now

m = Split(strDate, ".", -1, vbBinaryCompare)

If Left(m(0), 1) = 0 Then m(0) = Right(m(0), Len(m(0) - 1))

If Left(m(1), 1) = 0 Then m(1) = Right(m(1), Len(m(1) - 1))

FnDateRu_En = m(1) & "/" & m(0) & "/" & Left(m(2), 4)

End Function

'================================================================================

'================================================================================

'##### Преобразует из басурманского формата

'

'--------------------------------------------------------------------------------

Function FnDateEn_Ru(ByVal strDate As String) As String

m = Split(strDate, "/", -1, vbBinaryCompare)

If Len(m(0)) = 1 Then m(0) = "0" & m(0)

If Len(m(1)) = 1 Then m(1) = "0" & m(1)

FnDateEn_Ru = m(1) & "." & m(0) & "." & m(2)

End Function

'================================================================================

'================================================================================

'Минимальное-максимальное значение даты в массиве

'пееременные дат объявить в модуле

'Dim dDateVal As Date, dDateMin As Date, dDateMax As Date

'Dim strDateMin As String, strDateMax As String, strDate As String

'bln_CalculateDatePSFV-датуPSFV

'--------------------------------------------------------------------------------------------------

Sub Date_Min_Max(ByVal ar As Variant, _

ByVal bln_CalculateDatePSFV As Boolean)

If IsArray(ar) Then

dDateMin = Format(ar(LBound(ar), UBound(ar)), "DD.MM.YYYY")

dDateMax = dDateMin

Select Case bln_CalculateDatePSFV

Case True

For j = LBound(ar, 2) To UBound(ar, 2)

If Format(ar(0, j), "hh:mm:ss") < "07:00:00" Then

dDateVal = Format(CDate(ar(0, j)) - 1, "DD.MM.YYYY")

Else

dDateVal = Format(ar(0, j), "DD.MM.YYYY")

End If

If dDateVal < dDateMin Then dDateMin = dDateVal

If dDateVal > dDateMax Then dDateMax = dDateVal

Next j

Case False

For j = LBound(ar, 2) To UBound(ar, 2)

dDateVal = Format(ar(0, j), "DD.MM.YYYY")

If dDateVal < dDateMin Then dDateMin = dDateVal

If dDateVal > dDateMax Then dDateMax = dDateVal

Next j

End Select

If IsDate(dDateMin) Then strDateMin = fin_DateSQL(dDateMin)

If IsDate(dDateMax) Then strDateMax = fin_DateSQL(dDateMax)

End If

End Sub

'===============================================================================









'============================================================================================

'##### 'Поиск максимального(минимального) занчения даты

'дата для SQL

Function funSqlDate(ByVal dDate As Variant) As String

Dim strD As String, strM As String, strY As String

strD = Format(dDate, "DD")

strM = Format(dDate, "MM")

strY = Format(dDate, "YYYY")

funSqlDate = strM & "/" & strD & "/" & strY

End Function

'--------------------------------------------------------------------------------------------

Function fundDate(ByVal blnMax As Boolean, _

ByVal aDate As Variant) As Date

Dim iDate As Long, dDate As Date

Dim intLbound As Integer: intLbound = LBound(aDate)

fundDate = CDate(Trim(aDate(intLbound, LBound(aDate))))


Select Case blnMax

Case True:

For iDate = LBound(aDate) To UBound(aDate, 2)

If Len(Trim(aDate(intLbound, iDate))) > 0 Then

dDate = CDate(Trim(aDate(intLbound, iDate)))

If dDate > fundDate Then fundDate = dDate

End If

Next iDate

Case False:

For iDate = LBound(aDate) To UBound(aDate, 2)

If Len(Trim(aDate(intLbound, iDate))) > 0 Then

dDate = CDate(Trim(aDate(intLbound, iDate)))

If dDate < fundDate Then fundDate = dDate

End If

Next iDate

End Select

End Function

'============================================================================================

Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования