在机房收费系统中,时间不统一是很麻烦。尤其是时间格式不统一。
一,使用date和time获取电脑时间,这种事件往往因为人为原因而不统一。当然也有其好处,就是简单。
Print Date; "日期"
Print Time; "时间"
Print Now; "日期和日间"
Print Format(Now,"yyyy年mm月dd日hh时mm分ss秒")
Print Year(Now); "年"
Print Month(Now); "月"
Print Day(Now); "日"
Print Hour(Now); "时"
Print Minute(Now); "分"
Print Second(Now); "秒"
二是。利用网络来获取时间,这种往往是很不方便。要在有网的时候才能使用。听不实际的。用XMLHTTP随机访问一个网站可以获取时间。
(此过程我是借用他人代码,不是很明白,但是方法值得认识一下。不过个人感觉复杂)
Dim obj,OBJStatus,Url,GetText,i
Dim Retrieval
Url = "http://www.163.com"
'判断网络是否连接
If Url <> "" Then
Set Retrieval =GetObject("winmgmts:\\.\root\cimv2")
Set obj =Retrieval.ExecQuery("Select * From Win32_PingStatus Where Address ='" & Mid(Url,8) & "'")
For Each OBJStatus In obj
If IsNull(OBJStatus.StatusCode) OrOBJStatus.StatusCode <> 0 Then
Exit Sub
Else
Exit For '已连接则继续
End If
Next
End If
'通过下载网页头信息获取网络时间
Set Retrieval = CreateObject("Microsoft.XMLHTTP")
With Retrieval
.Open "Get",False,"",""
.setRequestHeader"If-Modified-Since","0"
.setRequestHeader"Cache-Control","no-cache"
.setRequestHeader "Connection","close"
.Send
If .Readystate <> 4 Then Exit Sub
GetText = .getAllResponseHeaders()
i = InStr(1,"date:",vbTextCompare)
If i > 0 Then '网页下载成功
i = InStr(i,",vbTextCompare)
GetText = Trim(Mid(GetText,i + 1))
i = InStr(1,"GMT",vbTextCompare)
GetText = Left(GetText,i - 1)
MsgBox "网络时间:"& GetText
End If
MsgBox "网络时间:"& GetText
End With
Set Retrieval = Nothing
Set OBJStatus = Nothing
Set obj = Nothing
三,利用winsock控件来获取时间。(窗体上放一个WINSOCK控件)。
编辑WINSOCK控件的DataArrival过程。
四,使用sql的GetDate函数来获取时间。自定义一个函数。
sqlTime = "select getdate()"