标题: [问题求助] vbs如何获取执行js代码后的返回值(Unix时间戳)? [打印本页]
作者: czjt1234 时间: 2016-6-23 11:31 标题: vbs如何获取执行js代码后的返回值(Unix时间戳)?
本帖最后由 pcl_test 于 2016-6-24 13:22 编辑
- 'win7x64,强制在32位环境运行脚本
- Set oWS = CreateObject("WScript.Shell")
- Set oFSO = CreateObject("Scripting.FileSystemObject")
- s = oWS.ExpandEnvironmentStrings("%windir%\SysWOW64\WScript.exe")
- If oFSO.FileExists(s) = True And LCase(WScript.FullName) <> LCase(s) Then
- oWS.Run s & " """ & WScript.ScriptFullName & """"
- WScript.Quit()
- End If
-
- Function timestamp()
- Dim js:Set js = CreateObject("ScriptControl")
- js.language = "JScript.encode"
- 'timestamp = js.EVAL("#@~^FAAAAA==c +A,fmY+*R7CV!+60v#igYAAA==^#~@ ") '这个可以显示
- timestamp = js.EVAL("msgbox (new Date()).valueOf();")
- End Function
-
- msgbox timestamp()
复制代码
msgbox在Java里不好执行啊
作者: pcl_test 时间: 2016-6-23 12:06
timestamp = js.EVAL("(new Date()).valueOf()")
另mshta也能较好解决两者的混编问题
作者: czjt1234 时间: 2016-6-23 15:59
这个是读取的当前时间,再请问一下,怎么指定时间
"(new Date()).valueOf('2010-01-01)"
这样不行么
这是是把时间转换为13位数字时间戳
反过来转换的语句又是什么?
谢谢
作者: czjt1234 时间: 2016-6-23 21:01
本地时间转为13数字时间戳
timestamp = js.Eval("new Date('2010/03/08 10:01:02').getTime();") '指定时间,必须是/
timestamp = js.Eval("new Date().getTime();") '当前时间
13数字时间戳转为本地时间
timestamp = js.EVAL("new Date(parseInt(1293072805000)).toLocaleString();")
10数字时间戳
http://demon.tw/programming/vbs-unix-time-stamp.html
DateDiff() 把时间转为时间戳
DateAdd() 把时间戳转为时间
作者: pcl_test 时间: 2016-6-24 15:02
本帖最后由 pcl_test 于 2016-6-28 09:07 编辑
- Function ToUnixTime(dt, ms, n)
- Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
- Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem",,48)
- For Each objItem in colItems
- TimeZone = objItem.CurrentTimeZone
- If isNull(ms)=true Then
- ms = left(split(objItem.LocalDateTime, ".")(1), 3)
- End If
- Next
- ToUnixTime = DateDiff("s", "1970-1-1 0:0:0", dt) - TimeZone*60
- If n=1 Then ToUnixTime = ToUnixTime *1000 + ms
- End Function
- 'msgbox ToUnixTime(CDate("2010/03/08 10:01:02"), 000, 1)
- msgbox ToUnixTime(now(), null, 1) '0表示输出秒级Unix时间戳,1表示输出毫秒级
复制代码
- Function FromUnixTime(ts, n)
- Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
- Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem",,48)
- For Each objItem in colItems
- TimeZone = objItem.CurrentTimeZone
- Next
- ms = ""
- If n = 1 Then
- 'ms = "." & right(ts, 3)
- ts = left(ts, len(ts) -3)
- End If
- FromUnixTime = DateAdd("s", ts + TimeZone*60, "1970-1-1 0:0:0") & ms
- End Function
- msgbox FromUnixTime(1293072805000, 1) '0表示以秒级转换成时间,1表示以毫秒级转换
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |