标题: [日期时间] [已解决]批处理如何获取指定网页上的日期时间(网络日期时间)并同步到本机? [打印本页]
作者: CatsTrip 时间: 2016-5-23 19:34 标题: [已解决]批处理如何获取指定网页上的日期时间(网络日期时间)并同步到本机?
本帖最后由 pcl_test 于 2016-5-25 00:26 编辑
/***********代码在从这里开始***********/
- @echo off
-
- title 获取网络时间,同步到本机(需联网)
-
- cd /d "%tmp%"
-
- (
-
- echo With CreateObject^("Microsoft.XMLHTTP"^)
-
- echo .open "get", "http://open.baidu.com/special/time/", False
-
- echo .send
-
- echo WScript.echo DateAdd^("s",CLng^(Left^(Split^(Split^(.responseText,"baidu_time("^)^(1^),")"^)^(0^),10^)^),"1969-12-31 20:00"^)
-
- echo End With
-
- )>gettime.vbs
-
- for /f "tokens=1*" %%i in ('cscript //nologo gettime.vbs') do date %%i & time %%j
-
- echo 本机系统时间设置完成!
复制代码
/***********代码在从这里结束***********/
拜托帮忙改一个这个批处理,原来是获取(http://open.baidu.com/special/time/)这里的时间,再用来更新到系统的,可是现在这个时间服务器打不开了。
PS:上面之所为1969年是因为我需要将获取到的时间,减去12个小时再更新到系统。
网上的资料我都有看过了,确实没有符合我这个需求的(主要是减12小时再更新到系统)如果会修改的请帮帮忙,感激不尽。
作者: WHY 时间: 2016-5-23 22:34
- (
- echo With CreateObject("Microsoft.XMLHTTP"^)
- echo .open "GET", "http://time.tianqi.com/", False
- echo .send
- echo s = Split(Split(.responseText, "new Date(("^)(1^), "+"^)(0^)
- echo End With
- echo WSH.Echo DateAdd("s", s * 1, "1969-12-31 20:00"^)
- )>getTime.vbs
复制代码
作者: CatsTrip 时间: 2016-5-23 22:38
回复 2# WHY
谢谢您,可以了使用了。祝您生活愉快!
作者: ygqiang 时间: 2016-5-24 11:05
回复 1# CatsTrip
正常北京时间是11:00,更新时间以后是23:00
这是为啥?- @echo off
- title 获取网络时间,同步到本机(需联网)
- cd /d "%tmp%"
- (
- echo With CreateObject("Microsoft.XMLHTTP"^)
- echo .open "GET", "http://time.tianqi.com/", False
- echo .send
- echo s = Split(Split(.responseText, "new Date(("^)(1^), "+"^)(0^)
- echo End With
- echo WSH.Echo DateAdd("s", s * 1, "1969-12-31 20:00"^)
- )>getTime.vbs
- for /f "tokens=1*" %%i in ('cscript //nologo gettime.vbs') do date %%i & time %%j
- echo 本机系统时间设置完成!
- exit
复制代码
作者: gawk 时间: 2016-5-24 13:22
回复 4# ygqiang
楼主的需求是“减去12个小时再更新到系统”
作者: pcl_test 时间: 2016-5-25 00:15
本帖最后由 pcl_test 于 2017-4-4 18:49 编辑
- /*&cls
- @echo off
- rem 去掉下句中的echo;方可同步,否则只显示
- for /f "tokens=1*" %%i in ('cscript -nologo -e:jscript "%~f0"') do echo;date %%i&echo;time %%j
- pause&exit
- */
-
- function az(n){return n<10?'0'+n:n}
- var http = new ActiveXObject('MSXML2.XMLHTTP');
- http.open('POST','http://www.114time.com/api/time.php', false)
- http.send();
- var dt = new Date(http.ResponseText*1);
- //减去12个小时上句改为var dt = new Date(http.ResponseText*1-12*3600*1000);
- Y = dt.getFullYear();
- M = dt.getMonth()+1;
- D = dt.getDate();
- h = dt.getHours();
- m = dt.getMinutes();
- s = dt.getSeconds();
- WSH.echo(Y+'/'+az(M)+'/'+az(D)+' '+az(h)+':'+az(m)+':'+az(s));
复制代码
作者: macangyekillua 时间: 2016-7-28 17:43
WHY 发表于 2016-5-23 22:34
请问一下
Split(Split(.responseText, "new Date(("^)(1^), "+"^)(0^)
这一句是什么意思啊?
我看到网页源代码里有这样一句:
new Date((1469696026+i+28800)*1000);i++;document.getElementById("times").innerHTML=now.toUTCString();}
能解释一下那句话的意思吗?谢谢指教。
作者: ygqiang 时间: 2016-7-28 19:07
回复 6# pcl_test
win7系统下,现在时间是2016年7月28日,19:06:15
这个执行以后,显示如下:
date 2016/07/28 time 07:06:15
如何修改代码,将时间加上12?谢谢了
作者: WHY 时间: 2016-7-29 00:19
回复 7# macangyekillua
代码的作用是为了获取 "new Date((" 后面的一串数字 "1469696026"
Split(.responseText, "new Date((")(1) 把网页文本内容以 new Date(( 为分隔符分割为数组,取数组第2个元素,即:1469696026+i+...
然后,Split("1469696026+i+...", "+")(0) 以 + 为分隔符分割为数组,取数组第1个元素,即:1469696026
作者: macangyekillua 时间: 2016-8-3 16:04
回复 9# WHY
谢谢指导了,还想请问一下,如果new date后面没有跟着数字那还能获取到时间吗?例如:
new Date().tolocalestring()+'星期'+'日一二三四五六'.charAt(new Date().getDay());",1000);
上面这样的,单位内网有个网站,首页有个时间,源码里只看到上面这一句,能有办法获取到网站的时间吗?再次感谢。
作者: pcl_test 时间: 2016-8-3 19:03
回复 10# macangyekillua
举个栗子,如下面网页
http://www.timedate.cn/worldclock/ti.asp
从源码看该html元素是没有日期时间数据的<span id="clock" class="sj"></span>,但经浏览器加载和解析后则带上了js生成的数据
所以可利用浏览器对象获取js生成的日期时间数据
vbs则如下- Set ie = CreateObject("InternetExplorer.Application")
- ie.Visible = true
- ie.navigate "http://www.timedate.cn/worldclock/ti.asp"
-
- Do
- WSH.Sleep 500
- Loop Until ie.readyState = 4
-
- msgbox ie.Document.getElementByID("clock").innertext
- ie.quit
复制代码
作者: macangyekillua 时间: 2016-8-3 20:23
回复 11# pcl_test
谢谢版主指教,我测试了一下,原来内网那个网站的时间是系统时间。
请问有什么办法如果网站没有提供时间的话,获取到网络时间吗?
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |