Date
数据类型有多精确(以秒的分数表示)?阔别多年后,我再次访问VB6,我的生活已经记不起我曾经知道的事情。我考虑给它加上一个memory-leak标签,因为我的内存泄露了(嗯,嗯,嗯)。
后来我发现了这个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
发布于 2008-10-09 10:30:32
1)仅秒级,以及
2)没有办法。
发布于 2008-10-09 12:34:52
Date
数据类型基于带范围检查(最小/最大日期值)的Double
数据类型以及考虑的纪元。换句话说,它没有什么特别之处,特别是考虑到VBA不是强类型语言。
如果你在一个连续体中考虑时间(我想你应该这样想),那么Double
是一个很好的选择。双精度浮点的精度,其中一天=1(整数)实际上是九位小数。因此,类型为Double
(因此类型为Date
)的值可以轻松地容纳亚秒值。
然而,您面临的问题是,VBA中的时态函数(Now
、DateSerial
、DateDiff
、DateAdd
等)的最小粒度是1秒。如果将它们与存储为亚秒级精度的Double
的日期值一起使用,则会舍入到一秒。同样适用于为VBA6编写的用户控件等。
当然,您可以为所需的时态函数编写自己的实现(我记得,为了在StdDataFormat
中读/写亚秒级的SQL Server值,而无需在VBA中舍入到MS数据网格中,必须实现包装类),但它会开始让人感觉您正在使用自己的时态数据类型(糟了!)
发布于 2008-10-09 10:27:10
我认为VB6中的日期数据类型不能处理一秒的分数。
https://stackoverflow.com/questions/186622
复制相似问题