Gre*_*edo 4 excel datetime vba
我有以下形式的字符串"yyyy-mm-dd hh:mm:ss.mmm"(结尾为毫秒)
我想将其转换为一个数字,最好是一个Date保留所有信息的数字
我试过了CDate(),例如。
Dim dateValue As Date
dateValue = CDate("2017-12-23 10:29:15.223")
Run Code Online (Sandbox Code Playgroud)
但是出现类型不匹配错误
一个Date类型可保存自此以来的天数,December 30 1899精度为一秒。尽管仍然可以通过将日期存储为货币类型来保留毫秒,因为与“日期/双精度”相比,它可以容纳4个额外的数字。
因此,一种替代方法是将日期作为时间戳存储在Currency表示自December 30 1899以下日期起经过的秒数的类型中:
Public Function CDateEx(text As String) As Currency
Dim parts() As String
parts = Split(text, ".")
CDateEx = CCur(CDate(parts(0)) * 86400) + CCur(parts(1) / 1000)
End Function
Run Code Online (Sandbox Code Playgroud)
并将时间戳转换回字符串:
Public Function FormatDateEx(dt As Currency) As String
FormatDateEx = Format(dt / 86400, "yyyy-mm-dd HH:mm:ss") & "." & ((dt - Fix(dt)) * 1000)
End Function
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4812 次 |
| 最近记录: |