以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  在单机上 如何获取准确的北京日期时间,而不受本地机的系统日期时间影响?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=54523)

--  作者:jswjyjf
--  发布时间:2014/7/30 9:57:00
--  在单机上 如何获取准确的北京日期时间,而不受本地机的系统日期时间影响?
在单机上 如何获取准确的北京日期时间,而不受本地机的系统日期时间影响?
--  作者:Bin
--  发布时间:2014/7/30 9:58:00
--  
必须要联网


--  作者:有点甜
--  发布时间:2014/7/30 9:58:00
--  

参考

 

http://foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=39601&skin=0

 

 


--  作者:有点甜
--  发布时间:2014/7/30 10:07:00
--  

 改一下,增加成功率

 

Dim TimeServers As String(,) = New String(2, 1) {}
TimeServers(0, 0) = "time-b.timefreq.bldrdoc.gov"
TimeServers(0, 1) = "132.163.4.102"
TimeServers(1, 0) = "time-c.timefreq.bldrdoc.gov"
TimeServers(1, 1) = "132.163.4.103"
TimeServers(2, 0) = "utcnist.colorado.edu"
TimeServers(2, 1) = "128.138.140.44"

Dim portNum As Integer = 13
Dim hostName As String
Dim bytes As Byte() = New Byte(1023) {}
Dim bytesRead As Integer = 0
Dim client As New System.Net.Sockets.TcpClient()
Dim str1 As String
Dim count As Integer = 0
Do
    For i As Integer = 0 To 2
        hostName = TimeServers(i, 1)
        Try
            client.Connect(hostName, portNum)
            Dim ns As System.Net.Sockets.NetworkStream = client.GetStream()
            bytesRead = ns.Read(bytes, 0, bytes.Length)
            client.Close()
           
            Exit For
        Catch generatedExceptionName As System.Exception
        End Try
    Next
    str1 = System.Text.Encoding.ASCII.GetString(bytes, 0, bytesRead)
    count += 1
Loop While count < 10 AndAlso str1 Is Nothing
Dim sp As Char() = New Char(0) {}
sp(0) = " "c
Dim dt As System.DateTime = New DateTime()

Dim s As String()
s = str1.Split(sp)
dt = System.DateTime.Parse(s(1) & " " & s(2))
\'得到标准时间
dt = dt.AddHours(8)
\'得到北京时间
Messagebox.show( dt)


--  作者:hunanwl
--  发布时间:2014/9/18 22:16:00
--  

 改一下,增加成功率

 

Dim TimeServers As String(,) = New String(2, 1) {}
TimeServers(0, 0) = "time-b.timefreq.bldrdoc.gov"
TimeServers(0, 1) = "132.163.4.102"
TimeServers(1, 0) = "time-c.timefreq.bldrdoc.gov"
TimeServers(1, 1) = "132.163.4.103"
TimeServers(2, 0) = "utcnist.colorado.edu"
TimeServers(2, 1) = "128.138.140.44"

Dim portNum As Integer = 13
Dim hostName As String
Dim bytes As Byte() = New Byte(1023) {}
Dim bytesRead As Integer = 0
Dim client As New System.Net.Sockets.TcpClient()
Dim str1 As String
Dim count As Integer = 0
Do
    For i As Integer = 0 To 2
        hostName = TimeServers(i, 1)
        Try
            client.Connect(hostName, portNum)
            Dim ns As System.Net.Sockets.NetworkStream = client.GetStream()
            bytesRead = ns.Read(bytes, 0, bytes.Length)
            client.Close()
            
            Exit For
        Catch generatedExceptionName As System.Exception
        End Try
    Next
    str1 = System.Text.Encoding.ASCII.GetString(bytes, 0, bytesRead)
    count += 1
Loop While count < 10 AndAlso str1 Is Nothing
Dim sp As Char() = New Char(0) {}
sp(0) = " "c
Dim dt As System.DateTime = New DateTime()

Dim s As String()
s = str1.Split(sp)
dt = System.DateTime.Parse(s(1) & " " & s(2))
\'得到标准时间
dt = dt.AddHours(8)
\'得到北京时间
Messagebox.show( dt)





看附件

多运行几次就会出错啊   说是索引超出数组界限啊

在狐表中是这样

让后我转到vs中  也是这样


甜甜老师   再看下你的代码是什么问题
[此贴子已经被作者于2014-9-18 22:26:54编辑过]

--  作者:有点甜
--  发布时间:2014/9/18 22:33:00
--  

Dim TimeServers As String(,) = New String(2, 1) {}
TimeServers(0, 0) = "time-b.timefreq.bldrdoc.gov"
TimeServers(0, 1) = "132.163.4.102"
TimeServers(1, 0) = "time-c.timefreq.bldrdoc.gov"
TimeServers(1, 1) = "132.163.4.103"
TimeServers(2, 0) = "utcnist.colorado.edu"
TimeServers(2, 1) = "128.138.140.44"

Dim portNum As Integer = 13
Dim hostName As String
Dim bytes As Byte() = New Byte(1023) {}
Dim bytesRead As Integer = 0
Dim client As New System.Net.Sockets.TcpClient()
Dim str1 As String
Dim count As Integer = 0
Do
    For i As Integer = 0 To 2
        hostName = TimeServers(i, 1)
        Try
            client.Connect(hostName, portNum)
            Dim ns As System.Net.Sockets.NetworkStream = client.GetStream()
            bytesRead = ns.Read(bytes, 0, bytes.Length)
            client.Close()
           
            Exit For
        Catch generatedExceptionName As System.Exception
        End Try
    Next
    str1 = System.Text.Encoding.ASCII.GetString(bytes, 0, bytesRead)
    count += 1
Loop While count < 10 AndAlso str1 Is Nothing
If str1 Is Nothing Then
    msgbox("网络繁忙,请稍后再试")
Else
    Dim sp As Char() = New Char(0) {}
    sp(0) = " "c
    Dim dt As System.DateTime = New DateTime()
   
    Dim s As String()
    s = str1.Split(sp)
    dt = System.DateTime.Parse(s(1) & " " & s(2))
    \'得到标准时间
    dt = dt.AddHours(8)
    \'得到北京时间
    Messagebox.show( dt)
End If


--  作者:有点甜
--  发布时间:2014/9/18 22:33:00
--  
网络问题,有时候会获取不到的。