|
本帖最后由 青青草 于 2021-7-25 20:17 编辑
随着操作系统的不同,日期格式也可能不同:
如:
星期日 2021-07-25
2021-07-25 星期日
07/25/2021 Sun
Sun 07/25/2021
如果考虑到中、英之外的其它语言的操作系统,日期格式的种类实在太多了。因此,直接使用系统变量 %date% 进行字符串截取来获取系统日期的方法并不可取。
实际上日期格式是由注册表 HKEY_CURRENT_USER\Control Panel\International 里面 sShortDate 的值来决定的。
获取系统日期及时间:
- @echo off
- setlocal EnableDelayedExpansion
- for /f "tokens=2 delims==" %%i in ('wmic path win32_operatingsystem get LocalDateTime /value ^| findstr "="') do (
- set "strDate=%%i"
- )
- set/a y=%strDate:~0,4%,m=1%strDate:~4,2%%%100,d=1%strDate:~6,2%%%100,h=1%strDate:~8,2%%%100,f=1%strDate:~10,2%%%100,s=1%strDate:~12,2%%%100
- echo !y!年!m!月!d!日 !h!时!f!分!s!秒
- pause
复制代码 有些时候我们需要计算某些程序或任务执行完毕所耗费的时间,这就需要对时间进行计算。
开始时的时间:- :mystartFunc
- for /f "tokens=2 delims==" %%i in ('wmic path win32_operatingsystem get LocalDateTime /value ^| findstr "="') do (
- set "strDate=%%i"
- )
- set/a y=%strDate:~0,4%,m=1%strDate:~4,2%%%100,d=1%strDate:~6,2%%%100,h=1%strDate:~8,2%%%100,f=1%strDate:~10,2%%%100,s=1%strDate:~12,2%%%100
- set/a m=(m+9)%%12,y-=m1/10,starttime1=(365*y+y/4-y/100+y/400+(m*153+2)/5+d-1),starttime2=h*3600+f*60+s
- GOTO:EOF
复制代码
结束时的时间:- :myendFunc
- for /f "tokens=2 delims==" %%i in ('wmic path win32_operatingsystem get LocalDateTime /value ^| findstr "="') do (
- set "strDate=%%i"
- )
- set /a y=%strDate:~0,4%,m=1%strDate:~4,2%%%100,d=1%strDate:~6,2%%%100,h=1%strDate:~8,2%%%100,f=1%strDate:~10,2%%%100,s=1%strDate:~12,2%%%100
- set /a m=(m+9)%%12,y-=m1/10,endtime1=(365*y+y/4-y/100+y/400+(m*153+2)/5+d-1),endtime2=h*3600+f*60+s
- set /a timeca=(%endtime1%-%starttime1%)*86400+%endtime2%-%starttime2%
- set /a hour=%timeca%/3600
- set /a minute=%timeca%/60-%hour%*60
- set /a second=%timeca%-%hour%*3600-%minute%*60
- set num=0
- if %hour% EQU %num% (if %minute% EQU %num% echo 本次操作,用时:%second%秒)
- if %hour% EQU %num% (if %minute% NEQ %num% echo 本次操作,用时:%minute%分%second%秒 )
- if %hour% NEQ %num% echo 本次操作,用时:%hour%时%minute%分%second%秒
- GOTO:EOF
复制代码
调用方法:
|
|