我觉这个p处理函数时间库非常好用。我自己在工作中有大量的使用。
试试下边这段代码(实现计算当前日期的秒数)
- @echo off
- for /f "tokens=1-7 delims=/-:. " %%a in ('echo;%date% %time%') do call :DateToSecs %%a %%b %%c %%e %%f %%g sectime
- echo 当前秒数:%sectime%
- pause
- goto :eof
-
-
- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- :DateToSecs %yy% %mm% %dd% %hh% %nn% %ss% secs
- ::
- :: 作者:Ritchie Lawrence, updated 2002-08-13. 版本 1.1
- ::
- :: 功能:返回自从 1970-01-01 00:00:00 到指定日期之间所经过的秒钟数
- :: 适用于 NT4/2000/XP/2003.
- ::
- :: 参数:%1 待转换的年,两位或者四位(传值调用)
- :: %2 待转换的月,范围是 1/01 到 12,可以以零开头(传值调用)
- :: %3 待转换的日,范围是 1/01 到 31,可以以零开头(传值调用)
- :: %4 待转换的小时,范围是 1/01 到 12 (12小时制,分钟数以“a”或者
- :: “p”结尾)或者 0/00 到 23 (24小时制)(传值调用)
- :: %5 待转换的分钟,范围是 00-59 (12小时制需加 a/p 后缀)(传值调用)
- :: %6 待转换的秒钟,范围是 0-59 或者 00-59(传值调用)
- :: %7 该变量用于接收所经过的秒钟数(引用调用)
- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- setlocal ENABLEEXTENSIONS
- set yy=%1&set mm=%2&set dd=%3&set hh=%4&set nn=%5&set ss=%6
- if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
- set /a dd=100%dd%%%100,mm=100%mm%%%100
- set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
- set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
- if 1%hh% LSS 20 set hh=0%hh%
- if {%nn:~2,1%} EQU {p} if "%hh%" NEQ "12" set hh=1%hh%&set/a hh-=88
- if {%nn:~2,1%} EQU {a} if "%hh%" EQU "12" set hh=00
- if {%nn:~2,1%} GEQ {a} set nn=%nn:~0,2%
- set /a hh=100%hh%%%100,nn=100%nn%%%100,ss=100%ss%%%100
- set /a j=j*86400+hh*3600+nn*60+ss
- endlocal&set %7=%j%&goto :EOF
- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
复制代码
另外,如果要转为16进制的也不难。有很多相关的代码请自己搜索一下。 |