| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6159 人关注过本帖
标题:求助!网页中的时间如何获取并修改本机时间。
只看楼主 加入收藏
增益其所不能
Rank: 1
来 自:警察学院
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-3-13
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:10 
求助!网页中的时间如何获取并修改本机时间。
http://www.  我想获取这个网页上的时间,并将自己电脑的时间修改成获取的时间,但是这个时间从网页的源码里看是来自它的数据库的。时间服务器也不好使。请大神说说有什么办法。
搜索更多相关主题的帖子: 服务器 数据库 如何 网页 
2014-03-13 14:39
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:20 
Private Sub Command1_Click()

Dim url As String
Dim s As String

url = "http://www.

s = GETHTML(url)

Dim i As Long, j As Long
i = InStr(1, s, "lb_DBTIM")         '先找ID

i = InStr(i, s, ">")                '再找这个标记的关闭字符
j = InStr(i, s, "<")                '找下一个标记开始的字符

If j > i Then
    MsgBox "获取时间:" & Mid(s, i + 1, j - i - 1)
Else
    MsgBox "获取时间失败"
End If

End Sub

Public Function GETHTML(url As String)
'使用 a814153 的代码 进行封装
    With CreateObject("WinHttp.WinHttpRequest.5.1")
        .Open "GET", url, False
        .Send
        GETHTML = .responsetext
    End With
End Function

授人于鱼,不如授人于渔
早已停用QQ了
2014-03-13 15:02
增益其所不能
Rank: 1
来 自:警察学院
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-3-13
收藏
得分:0 
回复 2楼 风吹过b
大神,果然获取成功了,但是没有更改本机的时间。更改本机时间的语句应该怎么实现呢?win7和XP是否通用呢?
2014-03-13 16:06
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
改时间,忘了 API 函数用哪个了。

命令行倒有二个命令。
date 日期    改日期
time 时间    改时间


s=Mid(s, i + 1, j - i - 1)
dim fj() as string                 
fj=split(s," ")                    '按空格分成二段,第一段是日期,第二段时时间
shell "cmd /c date " & fj(0),vbHide      '运行 CMD 命令进行更改 日期
shell "cmd /c time " & fj(1),vbHide      '运行 CMD 命令进行更改 时间

授人于鱼,不如授人于渔
早已停用QQ了
2014-03-13 17:18
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:0 
date="2014-12-31 0:0:0"    '修改日期
time="2014-12-31 0:0:0"    '修改时间,无需api或dos命令,风兄忘了
2014-03-13 18:21
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
真是忘了。 因为一般情况下都没去用过这个命令。

这个命令还是 ROM-BASIC 一直流传下来的吧,那个年代需要。

授人于鱼,不如授人于渔
早已停用QQ了
2014-03-13 19:39
增益其所不能
Rank: 1
来 自:警察学院
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-3-13
收藏
得分:0 
回复 5楼 lowxiong
Private Sub Command1_Click()
Timer1.Enabled = True
Command1.Enabled = False
Command1.Caption = "已获取时间"
End Sub
Public Function GETHTML(url As String)
'使用 a814153 的代码 进行封装
    With CreateObject("WinHttp.WinHttpRequest.5.1")
        .Open "GET", url, False
        .Send
        GETHTML = .responsetext
    End With
End Function

Private Sub Command2_Click()
Time = Right(Label1.Caption, 8)
End Sub

Function GetTime()
Dim url As String
  Dim s As String
  
  url = "http://www.

  s = GETHTML(url)
  Dim i As Long, j As Long
  i = InStr(1, s, "lb_DBTIME")         '先找ID

  i = InStr(i, s, ">")                '再找这个标记的关闭字符
  j = InStr(i, s, "<")                '找下一个标记开始的字符

  If j > i Then
      Label1.Caption = "服务器的时间:" & Mid(s, i + 1, j - i - 1)
      'MsgBox "服务器时间:" & Mid(s, i + 1, j - i - 1)
  Else
      'MsgBox "获取时间失败"

  End If
End Function

Private Sub Timer1_Timer()
GetTime
End Sub

Private Sub Timer2_Timer()
Label2.Caption = "本机电脑时间:" & Format(Now, "yyyy-mm-dd hh:mm:ss")
End Sub

我这个做出来,校对时间怎么样都有1S的误差。我哪儿弄错了吗?
2014-03-13 20:54
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
Private Sub Command2_Click()
Time = Right(Label1.Caption, 8)
End Sub
时间误差产生在这里。

====================
这个函数改一下:
Function GetTime()
Dim url As String
  Dim s As String
  
  url = "http://www.

  s = GETHTML(url)
  Dim i As Long, j As Long
  i = InStr(1, s, "lb_DBTIME")         '先找ID

  i = InStr(i, s, ">")                '再找这个标记的关闭字符
  j = InStr(i, s, "<")                '找下一个标记开始的字符

  If j > i Then
      GetTime=Mid(s, i + 1, j - i - 1)
      'Label1.Caption = "服务器的时间:" & Mid(s, i + 1, j - i - 1)
      'MsgBox "服务器时间:" & Mid(s, i + 1, j - i - 1)
  Else
      'MsgBox "获取时间失败"
  End If
End Function

--------
Private Sub Timer1_Timer()
'GetTime
Label1.Caption = gettime
End Sub
-----------
Private Sub Command2_Click()
'Time = Right(Label1.Caption, 8)
dim j as string
dim t1 as date,t2 as date
t1=time                           '调用前时间
j=gettime                         '重新读时间,在这个过程中,有时间误差
t2=time                           '调用后时间
Time = Right(j, 8) + (t2 -t1)          '这步不确定,没测试, t2-t1 是读取网页时的开销时间。你要测试一下,才能知道是不是要加上去。
label1.caption=j
End Sub

[ 本帖最后由 风吹过b 于 2014-3-13 21:46 编辑 ]

授人于鱼,不如授人于渔
早已停用QQ了
2014-03-13 21:39
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
使用远程时间。
其实应该是使用多次(〉2)读取网络时间来测算网络开销。

采取的应该是连续读2次,或几次,然后得到的时间与 本地时间相比较,然后在本地的基础上进去修正显示。

如:
t1=time                     本地时间
t2=right(gettime,8)         远程时间   这两个初始值
for i=1 to 2                再读2次远程
   t3=right(gettime,8)      保留最后一次的远程时间
next i
t4=time                     结束后的本地时间

t5=((t2-t1)+(t4-t3) )/2     两时间差值的平均值,反映本地与远程的时间差

t6=time + t5                本地时间+差值,得到服务器时间

不考虑时间是否相同的情况下。

授人于鱼,不如授人于渔
早已停用QQ了
2014-03-13 21:52
增益其所不能
Rank: 1
来 自:警察学院
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-3-13
收藏
得分:0 
回复 9楼 风吹过b
版主大神,我实在是改不出来了。整了一天也没有把误差整掉。你能帮我弄一个成品吗?实在是能力有限。
2014-03-14 00:47
快速回复:求助!网页中的时间如何获取并修改本机时间。
数据加载中...
 
   



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

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