VB6日期数据类型:精度和格式

时间:2008-10-09 10:07:24

标签: datetime vb6 formatting types

  1. VB6 Date数据类型的精确度(通过几分之一秒)?
  2. 如何格式化以显示一秒钟的分数?
  3. 我在缺席多年后重访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
    

3 个答案:

答案 0 :(得分:9)

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

如果你想到一个连续统一体的时间(和IMO你应该),那么Double是一个不错的选择。双精度浮点的精度,其中一天= 1(整数)实际上是九位小数。因此,类型Double(因此类型为Date)的值可以轻松容纳亚秒值。

但是,您面临的问题是VBA中的时态函数(NowDateSerialDateDiffDateAdd等)的最小粒度为 1第二即可。如果将它们与日期值一起存储为Double并具有亚秒精度,则会经历四舍五入到一秒。同样为VBA6编写的用户控件等。

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

答案 1 :(得分:3)

1)仅秒,

2)没有办法。

答案 2 :(得分:1)

我认为VB6中的Date数据类型无法处理几分之一。