标题:有没有办法让程序获得的是北京时间或者是网络时间
只看楼主
seafish011
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:167
专家分:694
注 册:2011-11-8
结帖率:90%
已结贴  问题点数:6 回复次数:5 
有没有办法让程序获得的是北京时间或者是网络时间
VB6中Print Date & Time出来的是电脑系统的日期时间,有没有办法让程序获得的是北京时间或者是网络时间。
搜索更多相关主题的帖子: 北京时间 
2013-01-26 11:59
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:6 
前面论坛里有一个人发了相关的问题。你仔细找找。
他的办法是读百度的一个网页,然后得到服务器返回的时间来处理

[ 本帖最后由 风吹过b 于 2013-1-26 14:31 编辑 ]

授人于鱼,不如授人于渔
早已停用QQ了
2013-01-26 14:23
sounydqb
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-1-26
得分:0 
进来看看了
2013-01-26 22:38
seafish011
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:167
专家分:694
注 册:2011-11-8
得分:0 
以下是引用风吹过b在2013-1-26 14:23:33的发言:

前面论坛里有一个人发了相关的问题。你仔细找找。
他的办法是读百度的一个网页,然后得到服务器返回的时间来处理


嗯,是的,我现在也是这样做,但是感觉有时候,他时间差几秒。
读取的是该百度页面:http://open.baidu.com/special/time/
程序代码:
For Each linkels In doc.getElementsByName("time")
    stime = Mid(linkels.outerHTML, 16, 8)
    secstime = CInt(Right(stime, 2))
    minstime = CInt(Mid(stime, 4, 2))
    houstime = CInt(Left(stime, 2))
    Time = houstime & ":" & minstime & ":" & secstime 
Next
2013-01-27 02:40
a814153
Rank: 2
等 级:论坛游民
威 望:1
帖 子:13
专家分:24
注 册:2011-6-9
得分:0 
Sub 获取北京时间1()
    On Error Resume Next
    Set oDoc = CreateObject("htmlfile")
    With CreateObject("Microsoft.XMLHTTP")
        .Open "GET", "http://www., False
        .send
        tt = Split(.responsetext, ";")
        MsgBox Split(tt(5), "=")(1) & ":" & Split(tt(6), "=")(1) & ":" & Split(tt(7), "=")(1)
    End With
End Sub

Sub 获取北京时间2()    ' 北京时间
    On Error Resume Next
    With CreateObject("internetexplorer.application")
        .Visible = False
        .Navigate "http://open.baidu.com/special/time/"
        Do Until .ReadyState = 4
            DoEvents
        Loop
        For Each linkels In .document.getElementsByName("time")
            stime = Mid(linkels.outerHTML, 16, 8)
            secstime = CInt(Right(stime, 2))
            minstime = CInt(Mid(stime, 4, 2))
            houstime = CInt(Left(stime, 2))
            MsgBox houstime & ":" & minstime & ":" & secstime
        Next
        .Quit
    End With
End Sub

Sub 获取北京时间3()
    On Error Resume Next
    With CreateObject("Microsoft.XMLDOM")
        .async = False
        .Load "http://www.time.
        Set cnd = .DocumentElement.ChildNodes(0).ChildNodes
        MsgBox cnd(4).Text & ":" & cnd(5).Text & ":" & cnd(6).Text
    End With
End Sub
2013-04-30 05:42
贸易飞
Rank: 1
等 级:等待验证会员
帖 子:12
专家分:0
注 册:2013-3-31
得分:0 
  楼主的意思,是不是说,因为本地时间不准(如时限软件,用户更改了计算机时间,欺骗软件还在试用期内),想要得到一个准确的时间,而且是东八区的北京时间?
  说说我的《贸易飞*万年历》当中的做法:
  首先,当然是要获得一个准确的时间。我们的要求也不高,使用普通的时间协议(RFC 868)即可,从网络时间服务器上取得一个从1900-1-1 0:0:1起的秒数,这是一个四字节数值,是世界时,即格林威治时间。这一步很简单,比从网页取时间准确可靠,前提是你会用WinSock。
  
  取得时间后,把四字节的数值,转化成年月日时分秒,即得到现在的世界时。
  如果你想得到北京时间,则很简单,世界时加上8个小时(注意月尾,尤其是闰年的处理),因为北京是东八区,就得到了北京时间。
  我的万年历,考虑到通用性(用户不一定是用北京时间,也许还使用东六区、西八区的时间),我先取本地计算机当中的系统时间(世界时)与当地时间,求出其时差,再把从网络上取回来的准确的世界时,经过时差修正后,转换成计算机用户的当地时间显示给用户。
  vb有个函数,能得到计算机的时区设置,但我没用过,反正要经过大量的计算,我就直接把当地时间给算出来了,感觉也还简单。
  
2013-05-16 10:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-397687-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.235243 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved