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

[日期时间] 批处理获取Unix时间戳

C标准库中的算法:
  1. @echo off
  2. call :time t
  3. echo %t%
  4. pause & exit
  5. :+ Author: Demon
  6. :+ Date: 2012/8/31
  7. :+ Website: http://demon.tw
  8. :time
  9. setlocal
  10. for /f %%x in ('wmic path win32_utctime get /format:list ^| findstr .') do set %%x
  11. set /a "year -= 1900, t = (year - 70) * 365 + ((year - 1) >> 2) - 17, leap = year & 3"
  12. for /f "tokens=%month%" %%i in ("-1 30 58 89 119 150 180 211 242 272 303 333 364") do set /a t += %%i
  13. if %leap% equ 0 if %month% gtr 1 set /a t += 1
  14. set /a t += day, t *= 24, t += hour, t *= 60, t += minute, t *= 60, t += second
  15. endlocal & set %1=%t% & goto :eof
复制代码
反人类的算法:
  1. @echo off
  2. call :time t
  3. echo %t%
  4. pause & exit
  5. :+ Author: Demon
  6. :+ Date: 2012/8/31
  7. :+ Website: http://demon.tw
  8. :time
  9. setlocal
  10. for /f "skip=1 tokens=1-9" %%a in ('wmic path win32_utctime ^| findstr .') do set /a m=%%e+9,m%%=12,y=%%i-m/10,t=365*y+y/4-y/100+y/400+(m*306+5)/10+%%a-719469,t=t*86400+%%c*3600+%%d*60+%%g
  11. endlocal & set %1=%t% & goto :eof
复制代码

utc 时间可以通过 本地 time 变量 给小时+8 来获取, 不知我理解的对否?

TOP

utc 时间可以通过 本地 time 变量 给小时+8 来获取, 不知我理解的对否?
plp626 发表于 2012-8-31 23:30


北京时间是UTC+8吧,应该-8才对。

但是本地时间是跟系统时区设置有关的,假定为UTC+8的话不具有可移植性,而要获取时区设置仍然要借助外部命令,所以想仅靠内部命令提高效率似乎是不行的。

TOP

恩, 有道理, 只是这个wmic 很不友好,

TOP

返回列表