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

[数值计算] [已解决]批处理如何获取系统时间并转换成十六进制的时间?

RT
先获取当前时间,然后转换成像C语言以1970年零时零分零秒为基淮的以秒为单位的十六进制时间?如果简单以一年365天来计算,看起来不难,不过日历时间还有四年一次的二月份是二十九天呢

[ 本帖最后由 friendtasy 于 2009-11-26 14:59 编辑 ]
1

评分人数

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

什么意思啊...16进制时间?
echo %time%就行

TOP

日期时间计算有现成的代码,参考:Ritchie Lawrence 批处理函数库中英文版
http://bbs.bathome.net/thread-3056-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2楼 的帖子

%time%仅是24进制时间,表示一天以内的时刻,起码要加上%date%吧,所谓十六进制时间,如4adf2172表示的是2009.10.21   22:57:54,就是从1970年零时零分零秒到这一刻过了多少秒,再把多少秒转换成4adf2172这样的表示形式。

TOP

回复 3楼 的帖子

在“秒钟数转日期”找到实例,不过运行出错,不知那里出现问题。可以说是这个实例的逆算法。

[ 本帖最后由 friendtasy 于 2009-10-26 08:06 编辑 ]

TOP

回复 5楼 的帖子

1、函数库里面既有“秒钟数转日期”又有“日期转秒钟数”,不需要自己再写逆算法。
2、运行出错很可能是你的测试方法有误。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 6楼 的帖子

嗯,看到了,不过不是很懂语句的意思,故未能自己运用。事实运行出错了,也许还需指定一些变量或参数吧

TOP

我觉这个p处理函数时间库非常好用。我自己在工作中有大量的使用。
试试下边这段代码(实现计算当前日期的秒数)

  1. @echo off
  2. for /f "tokens=1-7 delims=/-:. " %%a in ('echo;%date% %time%') do call :DateToSecs %%a %%b %%c %%e %%f %%g sectime
  3. echo 当前秒数:%sectime%
  4. pause
  5. goto :eof
  6. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  7. :DateToSecs %yy% %mm% %dd% %hh% %nn% %ss% secs
  8. ::
  9. :: 作者:Ritchie Lawrence, updated 2002-08-13. 版本 1.1
  10. ::
  11. :: 功能:返回自从 1970-01-01 00:00:00 到指定日期之间所经过的秒钟数
  12. ::       适用于 NT4/2000/XP/2003.
  13. ::
  14. :: 参数:%1 待转换的年,两位或者四位(传值调用)
  15. ::       %2 待转换的月,范围是 1/01 到 12,可以以零开头(传值调用)
  16. ::       %3 待转换的日,范围是 1/01 到 31,可以以零开头(传值调用)
  17. ::       %4 待转换的小时,范围是 1/01 到 12 (12小时制,分钟数以“a”或者
  18. ::          “p”结尾)或者 0/00 到 23 (24小时制)(传值调用)
  19. ::       %5 待转换的分钟,范围是 00-59 (12小时制需加 a/p 后缀)(传值调用)
  20. ::       %6 待转换的秒钟,范围是 0-59 或者 00-59(传值调用)
  21. ::       %7 该变量用于接收所经过的秒钟数(引用调用)
  22. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  23. setlocal ENABLEEXTENSIONS
  24. set yy=%1&set mm=%2&set dd=%3&set hh=%4&set nn=%5&set ss=%6
  25. if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
  26. set /a dd=100%dd%%%100,mm=100%mm%%%100
  27. set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
  28. set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
  29. if 1%hh% LSS 20 set hh=0%hh%
  30. if {%nn:~2,1%} EQU {p} if "%hh%" NEQ "12" set hh=1%hh%&set/a hh-=88
  31. if {%nn:~2,1%} EQU {a} if "%hh%" EQU "12" set hh=00
  32. if {%nn:~2,1%} GEQ {a} set nn=%nn:~0,2%
  33. set /a hh=100%hh%%%100,nn=100%nn%%%100,ss=100%ss%%%100
  34. set /a j=j*86400+hh*3600+nn*60+ss
  35. endlocal&set %7=%j%&goto :EOF
  36. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
复制代码


另外,如果要转为16进制的也不难。有很多相关的代码请自己搜索一下。
1

评分人数

TOP

回复 8楼 的帖子

很不错,可运行,需要仔细研究一下了。

TOP

返回列表