Option Base 1
Option Explicit
Option Private Module
'====================================================================================================
Sub Test()
Dim tx$, iRes$, t!, n&
tx = "26-AUG-20"
t = Timer
For n = 1 To 1000000
iRes = JF_2(tx) ' 0.8
' iRes = MSI_2(tx) ' 1
' iRes = MSI_1(tx) ' 2.1
' iRes = JF_1(tx) ' 2.7
' iRes = Matros(tx) ' 6.4
Next n
Debug.Print Format$(Timer - t, "0.0 sec"), iRes
End Sub
'====================================================================================================
'====================================================================================================
Function JF_1(txDate$)
Dim i&
i = InStr(1, "JanFebMarAprMayJunJulAugSepOctNovDec", Mid$(txDate, 4, 3), vbTextCompare)
If i Then JF_1 = CDate(Left$(txDate, 2) & "/" & (i + 2) / 3 & "/" & Right$(txDate, 2))
End Function
'----------------------------------------------------------------------------------------------------
Function JF_2(txDate$)
Dim i&
i = InStr(1, "janfebmaraprmayjunjulaugsepoctnovdec", LCase$(Mid$(txDate, 4, 3)))
If i Then JF_2 = DateSerial(Right$(txDate, 2), (i + 2) / 3, Left$(txDate, 2))
End Function
'====================================================================================================
Function MSI_1(txDate$)
Dim n As String, m As Byte
n = LCase(Mid$(txDate, 4, 3))
m = Switch(n = "jan", 1, n = "feb", 2, n = "mar", 3, n = "apr", 4, n = "may", 5, n = "jun", 6, n = "jul", 7, n = "aug", 8, n = "sep", 9, n = "oct", 10, n = "nov", 11, n = "dec", 12)
MSI_1 = DateSerial(Right$(txDate, 2), m, Left$(txDate, 2))
End Function
'----------------------------------------------------------------------------------------------------
Function MSI_2(txDate$)
Dim m$, n&
m = LCase$(Mid$(txDate, 4, 3))
Select Case True
Case m = "jan": n = 1
Case m = "feb": n = 2
Case m = "mar": n = 3
Case m = "apr": n = 4
Case m = "may": n = 5
Case m = "jun": n = 6
Case m = "jul": n = 7
Case m = "aug": n = 8
Case m = "sep": n = 9
Case m = "oct": n = 10
Case m = "nov": n = 11
Case m = "dec": n = 12
End Select
If n Then MSI_2 = DateSerial(Right$(txDate, 2), n, Left$(txDate, 2))
End Function
'====================================================================================================
Function Matros(ByVal txtDate As String) As Date
txtDate = Replace(txtDate, "JAN", "01")
txtDate = Replace(txtDate, "FEB", "02")
txtDate = Replace(txtDate, "MAR", "03")
txtDate = Replace(txtDate, "APR", "04")
txtDate = Replace(txtDate, "MAY", "05")
txtDate = Replace(txtDate, "JUN", "06")
txtDate = Replace(txtDate, "JUL", "07")
txtDate = Replace(txtDate, "AUG", "08")
txtDate = Replace(txtDate, "SEP", "09")
txtDate = Replace(txtDate, "OCT", "10")
txtDate = Replace(txtDate, "NOV", "11")
txtDate = Replace(txtDate, "DEC", "12")
Matros = DateValue(txtDate)
End Function
'==================================================================================================== |