[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] VBS的SWbemDateTime对象的FILETIME format 是怎么定义的?[已解决]

本帖最后由 czjt1234 于 2013-3-9 07:39 编辑

学习SWbemDateTime对象

但是为了搞明白
UTC 是啥
CIM_DATETIME 格式是怎样定义的
Interval Format 格式是怎样定义的
VT_DATE 格式是怎样定义的
为了搞清楚这几个单词,已经花了累计9个多小时了

还有个 FILETIME format 不知道到底是怎么定义的

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724284(v=vs.85).aspx
这里是什么乱七八糟的?
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

QQ 20147578

  1. Set objSWbemDateTime = CreateObject("WbemScripting.SWbemDateTime")
  2. objSWbemDateTime.SetVarDate("2000-1-2 18:30:00")
  3. objSWbemDateTime.IsInterval = True
  4. Msgbox objSWbemDateTime.Value
复制代码


这里显示的时间长度是2天18小时30分钟,这是怎么算的?

QQ 20147578

TOP

WMI有自己的日期和时间格式,该格式与代码页无关

WMI用于表示时间刻度的格式CIM_DATETIME:yyyymmddHHMMSS.mmmmmmsUUU
其中:yyyy年 mm月 dd日 HH小时 MM分 SS秒 mmmmmm微秒
s为+或-,分别代表东时区和西时区
UUU表示相对于UTC标准时间,相差多少分钟
比如东8区,相对于UTC标准时间,相差8小时,就是480分钟,记作+480。西5区则记作-300

WMI还有用于表示时间长度的格式Interval Format:ddddddddHHMMSS.mmmmmm:000
其中:dddddddd天数 HH小时 MM分 SS秒 mmmmmm微秒
最后的:000是固定格式

WMI支持VT_DATE格式,这是本地时间,与代码页相关
该格式是按照"控制面板"→"区域和语言选项"里设置的"短日期 时间"显示的
vbs里的Now函数返回的也是VT_DATE格式
如果你在控制面板里改变了区域设置,那么VT_DATE格式也会随之改变

FILENAME格式,表示一个时间长度值,精确到0.0000001秒=0.1微秒=100纳秒
起始时间,微软定为:1601-01-01 00:00:00
从起始时间到指定时间的长度

北京时间2000年1月2日 18:30:00
按CIM_DATETIME格式记作20000102183000.000000+480
按VT_DATE格式显示为2000-1-2 18:30:00
  1. Set objSWbemDateTime = CreateObject("WbemScripting.SWbemDateTime")
  2. objSWbemDateTime.SetVarDate("2000-1-2 18:30:07")    '按VT_DATE格式输入时间
  3. 'objSWbemDateTime.SetFileTime("125913114070000000") '按FILENAME格式输入时间
  4. Msgbox "按VT_DATE格式输入本地时间:2000-1-2 18:30:07"                     & vbCrLf & vbCrLf & _
  5.        "输出:"                                                                    & vbCrLf & _
  6.        "FILENAME格式本地时间" & vbTab & objSWbemDateTime.GetFileTime()             & vbCrLf & _
  7.        "FILENAME格式UTC时间"  & vbTab & objSWbemDateTime.GetFileTime(False)        & vbCrLf & _
  8.        "VT_DATE格式本地时间"  & vbTab & objSWbemDateTime.GetVarDate()              & vbCrLf & _
  9.        "VT_DATE格式UTC时间"   & vbTab & objSWbemDateTime.GetVarDate(False)         & vbCrLf & _
  10.        "CIM_DATETIME格式"     & vbTab & objSWbemDateTime.Value
复制代码

QQ 20147578

TOP

VT_DATE只不过是double而已。

TOP

返回列表