4
  1. VB6 数据类型有多精确Date(以几分之一秒计)?
  2. 如何格式化它以显示几分之一秒?

经过多年的缺席,我正在重温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
4

3 回答 3

9

Date数据类型基于具有范围检查(最小/最大日期值)的数据Double类型加上考虑的纪元。换句话说,它并没有什么特别之处,尤其是考虑到 VBA 不是一种强类型语言。

如果您认为时间是连续的(并且您应该考虑 IMO),那么 aDouble是一个很好的选择。一天 = 1(整数)的双精度浮点的精度实际上是九位小数。因此 type 的值Double(因此 type Date)可以轻松地容纳亚秒级的值。

但是,您面临的问题是 VBA 中的时间函数(NowDateSerialDateDiffDateAdd)的最小粒度为1 秒。如果您将它们与Double以亚秒精度存储的日期值一起使用,您将体验到四舍五入到一秒。为 VBA6 编写的用户控件等也是如此。

当然,您可以编写自己的时间函数实现(我记得必须实现包装类StdDataFormat,以便读取/写入亚秒级 SQL Server 值,而无需在 VBA 中四舍五入到 MS 数据网格),但它会开始感觉就像您正在滚动自己的时间数据类型(哎哟!)

于 2008-10-09T12:34:51.733 回答
3

1) 仅几秒钟,并且

2)没有办法。

于 2008-10-09T10:30:32.157 回答
1

我认为 VB6 中的日期数据类型不能处理几分之一秒。

于 2008-10-09T10:27:09.807 回答