Bin*_*ier 4 vb6 formatting datetime types
Date
数据类型的精确度(通过几分之一秒)?多年以后,我正在重新审视VB6,因为我的生活不记得我曾经知道的事情.我考虑过在这上面放一个内存泄漏标签,因为我的记忆泄露了(赶紧冲).
之后我发现了这个API调用,它似乎工作:
Declare Sub GetSystemTime Lib "kernel32.dll" (lpSystemTime As SystemTime)
Public Type SystemTime
Year As Integer
Month As Integer
DayOfWeek As Integer
Day As Integer
Hour As Integer
Minute As Integer
Second As Integer
Milliseconds As Integer
End Type
Run Code Online (Sandbox Code Playgroud)
该 Date
数据类型是基于Double
与范围检查(最小值/最大值日期值)加上考虑时期的数据类型.换句话说,它没有什么特别之处,特别是考虑到VBA不是一种强类型语言.
如果你想到连续统一的时间(和你应该的IMO),那么a Double
是一个很好的选择.双精度浮点的精度,其中一天= 1(整数)实际上是九位小数.因此,类型Double
(因此类型Date
)的值可以舒适地容纳亚秒值.
但是,面对的问题是,内VBA时间函数(Now
,DateSerial
,DateDiff
,DateAdd
等)具有的最小粒度1秒.如果您将它们与日期值一起存储为Double
亚秒精度,您将经历四舍五入到一秒.同样为VBA6编写的用户控件等.
您可以编写自己的时间函数实现,当然(我记得必须实现包装类StdDataFormat
,以便读取/写入亚秒级SQL Server值而不会在VBA中转换为MS数据网格)但它将开始感觉你正在滚动自己的时态数据类型(哎哟!)
归档时间: |
|
查看次数: |
4250 次 |
最近记录: |