編程中常常會與時間打交道,VB編程自然也不例外。以下就談談我在這方面的一點經驗。
VB中提供了很多變量類型,DATE型就是專門用了存儲時間的。
1、DATE型變量及其相關函數。
在內部,一個Date占8個字節的內存,你可以方便地用它來存儲日期和時間。給Date變量賦值是很容易的。但請保證輸入順序與系統默認的時間表示順序相同。例如:
Dim d As Date
d = #5/23/99 11:45:34 AM#
DateSerial函數可以把年、月、日的數字組合成一個Date值。TimeSerial函數可把小時、分、秒的數字組合成一個Date值。且兩函數可以疊加。
d = DateSerial(1999, 5, 23) + TimeSerial(11, 45, 34)
而DateValue 和TimeValue 函數則可將代表日期和時間的字符串轉化為Date型,并且也可以疊加。
d = DateValue(“1999/ 5/ 23”) + TimeValue(“11: 45: 34”)
Format函數可按預定的格式顯示或打印一個Date變量。如:
Print Format(d, “general date”) `99-5-23 11:45:34
Print Format(d, “long date”) `1999年5月23日
Print Format(d, “medium date”) `99-05-23
Print Format(d, “short date”) `99-5-23
Print Format(d, “long time”) `11:45:34
Print Format(d, “medium time”) `11:45 AM
Print Format(d,“short time”) `11:45
Format函數也允許你自己規定顯示格式。如:
Print Format(d, “mmmm”) `may 產生日期中月份的英文
以以上日期為例,如想顯示其中的一部分信息可使用以下函數:
Print Month(d) `5
Print Day(d) `23
Print Year(d) `1999
Print Hour(d) `11
Print Minute(d) `45
Print Second(d) `34
Print WeekDay(d)`1
Weekday 提供了一組內部常量,vbSunday代表1,直到 vbSaturday代表7。
Now 函數可返回今天的日期及時間。如:
Private Sub Form_Click()
Dim d As Date
d = Now
Print d
End Sub
靈活地應用以上的函數,可以大大地簡化你的程序。例如想計算10000秒等于幾小時幾分幾秒可寫為:
Private Sub Form_Click()
Dim d As Date
d = TimeSerial(0, 0, 10000)
Print d
End Sub
結果為2:46:40。
2、與時間相關的常用控件。
Timer控件是一個奇特的控件。Timer 控件會在固定時間間隔中運行Timer事件。此間隔是由Interval屬性決定的,其單位為千分之一秒。但不要以為將其值設為0事件就可不間斷地運行了。結果恰恰相反,事件將一次也不運行。同時還要注意變量的聲明。如:
Private Sub Timer1_Timer()
Dim a As Integer
a = a + 1
Print a
End Sub
Dim a As Integer
Private Sub Timer1_Timer()
a = a + 1
Print a
End Sub
試試看,其結果是完全不同的。
當需要用戶輸入時間時,為避免出現錯誤的時間,可以使用日歷控件。它只允許用戶在日歷表中選擇日期,避免了錯誤的發生。
3、記錄時間的API函數。
GetTickCount Windows API函數可返回 Windows 啟動以來消失的毫秒數。其精度高于VB的Timer 函數。且Timer 函數會在午夜清零,而GetTickCount 函數只有當機器連續使用49.7天后才返回零。這為我們編程提供了很大的方便。例如想知道你的電腦連續工作多久了,可新建一工程,然后添加以下代碼:
Private Declare Function GetTickCount Lib “kernel32" () As Long
Private Sub Form_Load()
Dim d As Date
Dim t As Integer
Form1.Show
t = GetTickCount \ 1000
d = TimeSerial(0, 0, t)
Print d
End Sub??