Board logo

标题: [问题求助] vbs如何获取执行js代码后的返回值(Unix时间戳)? [打印本页]

作者: czjt1234    时间: 2016-6-23 11:31     标题: vbs如何获取执行js代码后的返回值(Unix时间戳)?

本帖最后由 pcl_test 于 2016-6-24 13:22 编辑
  1. 'win7x64,强制在32位环境运行脚本
  2. Set oWS  = CreateObject("WScript.Shell")
  3. Set oFSO = CreateObject("Scripting.FileSystemObject")
  4. s = oWS.ExpandEnvironmentStrings("%windir%\SysWOW64\WScript.exe")
  5. If oFSO.FileExists(s) = True And LCase(WScript.FullName) <> LCase(s) Then
  6.     oWS.Run s & " """ & WScript.ScriptFullName & """"
  7.     WScript.Quit()
  8. End If
  9. Function timestamp()
  10.     Dim js:Set js = CreateObject("ScriptControl")
  11.     js.language = "JScript.encode"
  12.     'timestamp = js.EVAL("#@~^FAAAAA==c        +A,fmY+*R7CV!+60v#igYAAA==^#~@ ") '这个可以显示
  13.     timestamp = js.EVAL("msgbox (new Date()).valueOf();")
  14. End Function
  15. 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 编辑
  1. Function ToUnixTime(dt, ms, n)
  2.     Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
  3.     Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem",,48)
  4.     For Each objItem in colItems
  5.         TimeZone = objItem.CurrentTimeZone
  6.         If isNull(ms)=true Then
  7.             ms = left(split(objItem.LocalDateTime, ".")(1), 3)
  8.         End If
  9.     Next
  10.     ToUnixTime = DateDiff("s", "1970-1-1 0:0:0", dt) - TimeZone*60
  11.     If n=1 Then ToUnixTime = ToUnixTime *1000 + ms
  12. End Function
  13. 'msgbox ToUnixTime(CDate("2010/03/08 10:01:02"), 000, 1)
  14. msgbox ToUnixTime(now(), null, 1)  '0表示输出秒级Unix时间戳,1表示输出毫秒级
复制代码
  1. Function FromUnixTime(ts, n)
  2.     Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
  3.     Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem",,48)
  4.     For Each objItem in colItems
  5.         TimeZone = objItem.CurrentTimeZone
  6.     Next
  7.     ms = ""
  8.     If n = 1 Then
  9.         'ms = "." & right(ts, 3)
  10.         ts = left(ts, len(ts) -3)
  11.     End If
  12.     FromUnixTime = DateAdd("s", ts + TimeZone*60, "1970-1-1 0:0:0") & ms
  13. End Function
  14. msgbox FromUnixTime(1293072805000, 1)  '0表示以秒级转换成时间,1表示以毫秒级转换
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2