Как я могу разобрать строку даты / времени в объект Дата доступа, учитывая определенный формат даты и времени?
Я могу использовать функцию CDate () следующим образом:
Dim StrDateTime As String
Dim DtTest As Date
StrDateTime = "2011-12-31 23:59:59"
DtTest = CDate(StrDateTime)
MsgBox DtTest
Это работает, Access распознает формат, хорошо, но как я могу быть абсолютно уверен, что это происходит при любых обстоятельствах (например, настройки даты / времени, региональные настройки, версия Access?). Я хотел бы «сообщить» CDate мой специальный формат даты / времени.
Другой вариант (но много кода):
Dim StrDateTime As String
Dim IntYear As Integer
Dim IntMonth As Integer
Dim IntDay As Integer
Dim IntHour As Integer
Dim IntMinute As Integer
Dim IntSecond As Integer
StrDateTime = "2011-12-31 23:59:59"
IntYear = Val(Mid(StrDateTime, 1, 4))
IntMonth = Val(Mid(StrDateTime, 6, 2))
IntDay = Val(Mid(StrDateTime, 9, 2))
IntHour = Val(Mid(StrDateTime, 12, 2))
IntMinute = Val(Mid(StrDateTime, 15, 2))
IntSecond = Val(Mid(StrDateTime, 18, 2))
DtTest = DateSerial(IntYear, IntMonth, IntDay)
DtTest = DtTest + TimeSerial(IntHour, IntMinute, IntSecond)
MsgBox DtTest
Другое преимущество CDate (): он выдает ошибку несоответствия типов при неправильном значении даты / времени. DateSerial + TimeSerial пересчитывает новую дату и время, поэтому «2011-12-31 24:59:59» становится 01 / Jan / 2012 0: 59: 59.