2008-10-09 48 views
3
  1. VB6的數據類型的精確程度如何?(通過幾分之一秒)?
  2. 如何格式化以顯示秒的分數?

我在重提VB6多年後沒有了,而且對於我的生活而言,我不記得以前知道的東西。我考慮把標籤放在這裏,因爲我的記憶泄露了(呃呃)。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

1)僅限秒和

2)沒有辦法。

1

我認爲,在VB6的日期數據類型不能處理秒的小數部分。

7

Date數據類型基於帶範圍檢查(最小/最大日期值)的Double數據類型加上考慮的歷元。換句話說,沒有什麼特別的,特別是考慮到VBA不是強類型語言。

如果你想到連續統一體的時間(和IMO應該),那麼Double是一個很好的選擇。雙精度浮點的精度,其中一天= 1(整數)實際上是九位小數。因此,Double(因此類型爲Date)的值可以舒適地適應亞秒值。

但是,所面臨的問題是,內VBA(NowDateSerialDateDiffDateAdd等)的時間函數具有的1秒的最小粒度。如果您將日期值與亞秒級精度的Double存儲在一起使用它們,您將體驗到四捨五入到一秒。用於VBA6的用戶控件等。

可以寫自己實現你的需要,當然(我記得有實現的包裝類StdDataFormat爲了不四捨五入到MS數據網格,在讀/寫一秒的SQL Server值時間功能VBA),但它會開始覺得你正在滾動你自己的時間數據類型(ouch!)