7,763
社区成员
发帖
与我相关
我的任务
分享
Private Sub Form_Load()
MsgBox getWebDatetime
End Sub
'方法一,根据个别网址得到时间,由于网站不确定性可能会更新导致失效。不推荐
Private Function getWebDatetime() As String
Dim strData As String
Dim reg As Object
Dim XmlHttp As Object
Set XmlHttp = CreateObject("Microsoft.XMLHTTP")
XmlHttp.Open "GET", "http://www.beijing-time.org/time15.asp", False
XmlHttp.SetRequestHeader "If-Modified-Since", "0"
XmlHttp.send
strData = StrConv(XmlHttp.ResponseBody, vbUnicode)
Set XmlHttp = Nothing
Set reg = CreateObject("vbscript.regExp")
reg.Global = True
reg.IgnoreCase = True
reg.MultiLine = True
reg.Pattern = "[\s\S]*?(\d{4})[\s\S]*?(\d+)[\s\S]*?(\d+)[\s\S]*?(?:\d+)[\s\S]*?(\d+)[\s\S]*?(\d+)[\s\S]*?(\d+);.*"
getWebDatetime = reg.Replace(strData, "$1-$2-$3 $4:$5:$6")
End Function
方法二,根据网上提供的一些接口提供。推荐
'直接调用getWebDatetime获取网络日期时间
Public Function getWebDatetime() As String
Dim XmlHttp As Object, objJs As Object, objStream As Object
Set XmlHttp = CreateObject("Microsoft.XMLHTTP")
XmlHttp.Open "GET", "http://api.k780.com:88/?app=life.time&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json", False
XmlHttp.SetRequestHeader "If-Modified-Since", "0"
XmlHttp.send
Set objStream = CreateObject("Adodb.Stream")
objStream.Type = 1
objStream.Mode = 3
objStream.Open
objStream.Write XmlHttp.ResponseBody
objStream.position = 0
objStream.Type = 2
objStream.Charset = "UTF-8"
Set objJs = CreateObject("msscriptcontrol.scriptcontrol")
objJs.Language = "jScript"
getWebDatetime = objJs.eval("eval(" & objStream.ReadText & ").result.datetime_1")
objStream.Close
Set objStream = Nothing
Set XmlHttp = Nothing
Set objJs = Nothing
End Function
'方法三,读取网站服务器返回的时间,这里的百度网站可以换成任何其他的例如淘宝。强烈推荐
Private Function getWebDatetime() As String
Dim XmlHttp As Object, objJs As Object
Set XmlHttp = CreateObject("Microsoft.XMLHTTP")
XmlHttp.Open "POST", "http://www.baidu.com", False
XmlHttp.send
Set objJs = CreateObject("msscriptcontrol.scriptcontrol")
objJs.Language = "jScript"
getWebDatetime = objJs.Eval("var dt = new Date('" & XmlHttp.getResponseHeader("Date") & "');var date = [ [dt.getFullYear(), dt.getMonth() + 1, dt.getDate()].join('-'), [dt.getHours(), dt.getMinutes(), dt.getSeconds()].join(':')].join(' ').replace(/(?=\b\d\b)/g, '0');date;")
Set XmlHttp = Nothing
Set objJs = Nothing
End Function
'方法四,直接用vb转换GMT时间(网友Chen8013提供),强烈推荐推荐
Private Function getWebDatetime() As String
Dim XmlHttp As Object
Set XmlHttp = CreateObject("Microsoft.XMLHTTP")
XmlHttp.Open "POST", "http://www.baidu.com", False
XmlHttp.send
getWebDatetime = CDate(1 / 3 + CDbl(CDate(Mid$(XmlHttp.getResponseHeader("Date"), 5, 21))))
Set XmlHttp = Nothing
End Function
Private Function getWebDatetime() As String
Dim XmlHttp As Object
Set XmlHttp = CreateObject("Microsoft.XMLHTTP")
XmlHttp.Open "POST", "http://www.baidu.com", False
XmlHttp.send
getWebDatetime = CDate(1 / 3 + CDbl(CDate(Mid$(XmlHttp.getResponseHeader("Date"), 5, 21))))
Set XmlHttp = Nothing
End Function
var dt = new Date('Thu, 19 Jan 2017 05:47:24 GMT');
var date = [
[dt.getFullYear(), dt.getMonth() + 1, dt.getDate()].join('-'),
[dt.getHours(), dt.getMinutes(), dt.getSeconds()].join(':')
].join(' ').replace(/(?=\b\d\b)/g, '0');
这上面是你的代码, 然后我贴VB代码,先来“两步”处理的。
Dim strText As String
strText = Mid$("Thu, 19 Jan 2017 05:47:24 GMT", 5)
strText = Left$(strText, Len(strText) - 4)
MsgBox CDate(strText), 64
再来“一步”的:
Dim strText As String
strText = Mid$("Thu, 19 Jan 2017 05:47:24 GMT", 5, 21)
MsgBox CDate(strText), 64
究竟哪个简单点?
就算“两步处理”,并且还转换成“北京时间”,也就这样而已:
Dim strText As String
strText = Mid$("Thu, 19 Jan 2017 05:47:24 GMT", 5)
strText = Left$(strText, Len(strText) - 4)
MsgBox CDate(1 / 3 + CDbl(CDate(strText))), 64
我感觉VB代码的简单、易懂、易记多了…………
var dt = new Date('Thu, 19 Jan 2017 05:47:24 GMT');
var date = [
[dt.getFullYear(), dt.getMonth() + 1, dt.getDate()].join('-'),
[dt.getHours(), dt.getMinutes(), dt.getSeconds()].join(':')
].join(' ').replace(/(?=\b\d\b)/g, '0');