- VB6
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
Date
数据类型基于具有范围检查(最小/最大日期值)的Double
数据类型加上考虑的epoch。换句话说,它没有什么特别之处,特别是考虑到VBA不是一种强类型语言。
如果你认为时间是一个连续体(你应该考虑IMO),那么Double
是一个很好的选择。一天=1(整数)的双精度浮点的精度实际上是小数点后九位。因此,类型为Double
(并且因此类型为Date
)的值可以舒适地适应亚秒值。
但是,您面临的问题是VBA中的时间函数(Now
、DateSerial
、DateDiff
、DateAdd
等)的最小粒度为1秒。如果将它们与以秒精度存储为Double
的日期值一起使用,您将经历四舍五入到1秒的过程。同样适用于为VBA6编写的用户控件等。
当然,您可以编写自己所需的时态函数的实现(我记得必须为StdDataFormat
实现包装器类,以便在不舍入到VBA中的MS数据网格的情况下读/写第二个SQL Server值),但您会开始感觉自己在滚动自己的时态数据类型(ouch!)
1)仅限秒,并且
2) 没有办法。
我认为VB6中的日期数据类型不能处理几分之一秒。