Windows 10 Pro,英国英语区域设置.在Excel VBA中,我有一个字符串"02/05/2017 16:30",在英国,意思是"2017年5月2日16:30"
但VBA以某种方式将其转换为美国格式并在单元格中将"05/02/2017 16:30"改为
VBA代码是这样的
Dim sField As String
sField = "02/05/2017 16:30"
ws.Cells(1,1) = sField
Run Code Online (Sandbox Code Playgroud)
我可以使用CDate解决这个问题,但需要额外的代码来确定哪些单元格是日期,哪些不是,而隐式转换适用于所有类型.
在给定特定日期和时间格式的情况下,如何将日期/时间字符串解析为Access Date对象?
我可以像这样使用CDate()函数:
Dim StrDateTime As String
Dim DtTest As Date
StrDateTime = "2011-12-31 23:59:59"
DtTest = CDate(StrDateTime)
MsgBox DtTest
Run Code Online (Sandbox Code Playgroud)
这有效,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 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用记录集中的CDate()将文本字段转换为日期,但不断出现类型不匹配错误.输入文本格式为MMDDYYYY.CDate不承认这种格式吗?我需要一个单独的功能吗?有任何想法吗?
Text Date -> Converted Date
--------- --------------
04122012 -> 04/12/2012
Dim db As DAO.Database
Dim rst As DAO.Recordset
Set db = CurrentDb
Set rst = db.OpenRecordset("tbl_dates", Type:=dbOpenDynaset)
Do Until rst.EOF
rst.Edit
rst![Converted Date]=CDate(rst![Text Date])
rst.Update
rst.MoveNext
Loop
Set rst = Nothing
Set db = Nothing
Run Code Online (Sandbox Code Playgroud) 日期/时间格式如下:
Date/Time
02-05-2018 07:45
02-05-2018 07:50
1/17/2018 2:15
1/17/2018 2:30
1/17/2018 2:45
Run Code Online (Sandbox Code Playgroud)
上面的“02-05-2018”假设是 2 月 5 日,但它是 5 月 2 日。
基本上格式如下:
02-05-2018 07:45 - dd-mm-yyyy hh:mm,实际值为 43222.32292,我相信这是一种文本格式
现在我需要将所有这些条目转换为正常的日期/时间格式:mm-dd-yyyy hh:mm
请让我知道,尝试了几种方法但没有运气