|
plp626
银牌会员
钻石会员
积分 2278
发帖 1020
注册 2007-11-19
状态 离线
|
『第
16 楼』:
MonthNumber
The MonthNumber function returns the number of a number from a month name.
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:MonthNumber %month% mm
::
:: By: Ritchie Lawrence, 2003-05-14. Version 1.0
::
:: Func: Returns the number of month from name of month. Case insensitive
:: and only the first three letters are matched, result is 01 to
:: 12 or NULL if no match. For NT4/2000/XP/2003.
::
:: Args: %1 month name to convert to month number, Jan to Dec (by val)
:: %2 var to receive number of month (by ref)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal ENABLEEXTENSIONS & set i=0
for %%a in (Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec) do (
set /a i+=1 & echo/%1|findstr /i /b "%%a" >nul && call set mm=%%i%%)
(if 1%mm% LSS 110 set mm=0%mm%) & endlocal&set %2=%mm%&goto :EOF
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Parameters
%1 month name to convert to month number, Jan to Dec (by val)
%2 var to receive number of month (by ref)
Return Values
Only the first three letters of the month are required. For example, if called with Apr or April, 4 is returned. This function is case insensitive. If the month name is invalid, NULL is required.
Example
@echo off & setlocal ENABLEEXTENSIONS
call :MonthNumber April mm
echo/April is month: %mm%
goto :EOF
Remarks
None.
|
山外有山,人外有人;低调做人,努力做事。
进入网盘(各种工具)~~ 空间~~cmd学习 |
|
2008-4-27 02:55 |
|
|
plp626
银牌会员
钻石会员
积分 2278
发帖 1020
注册 2007-11-19
状态 离线
|
『第
17 楼』:
OrdinalToDate
The OrdinalToDate function returns a calendar date from an ISO 8601 Ordinal date.
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:OrdinalToDate %year% %doy% yy mm dd
::
:: By: Ritchie Lawrence, 2002-09-29. Version 1.0
::
:: Func: Returns a calendar date from an ISO 8601 Ordinal date.
:: For NT4/2000/XP/2003.
::
:: Args: %1 year component to be converted, 4 digits (by val)
:: %2 day of year component to be converted, 001 to 366 (by val)
:: %3 var to receive year, 4 digits (by ref)
:: %4 var to receive month, 2 digits, 01 to 31 (by ref)
:: %5 var to receive day of month, 01 to 31 (by ref)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal ENABLEEXTENSIONS
for /f "tokens=1-2" %%a in ('echo/%1 %2') do set /a yy=%%a,o=1%%b%%1000
set /a z=14-1,z/=12,y=yy+4800-z,m=1+12*z-3,j=153*m+2
set /a j=j/5+1+y*365+y/4-y/100+y/400-2432046,j+=o-1
set /a a=j+2432045,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %3=%yy%&set %4=%mm%&set %5=%dd%&goto :EOF
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Parameters
%1 year component to be converted, 4 digits (by val)
%2 day of year component to be converted, 001 to 366 (by val)
%3 var to receive year, 4 digits (by ref)
%4 var to receive month, 2 digits, 01 to 31 (by ref)
%5 var to receive day of month, 01 to 31 (by ref)
Return Values
See parameters above.
Example
@echo off & setlocal ENABLEEXTENSIONS
call :OrdinalToDate 2000 090 y m d
echo/The date of the 90th day of the year 2000 is: %y%-%m%-%d%
goto :EOF
Remarks
Note the second parameter (day of year) must be in the range 001 to 366 (not 1 to 366).
|
山外有山,人外有人;低调做人,努力做事。
进入网盘(各种工具)~~ 空间~~cmd学习 |
|
2008-4-27 02:55 |
|
|
plp626
银牌会员
钻石会员
积分 2278
发帖 1020
注册 2007-11-19
状态 离线
|
『第
18 楼』:
SecsToDate
The SecsToDate function converts the number of seconds elapsed since 1970-01-01 00:00:00 to a calendar date and time.
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:SecsToDate %secs% yy mm dd hh nn ss
::
:: By: Ritchie Lawrence, updated 2002-07-24. Version 1.1
::
:: Func: Returns a calendar date and time of day from the number of
:: elapsed seconds since 1st January 1970 00:00:00. For
:: NT4/2000/XP/2003.
::
:: Args: %1 seconds used to create calendar date and time of day (by val)
:: %2 var to receive year, 4 digits for all typical dates (by ref)
:: %3 var to receive month, 2 digits, 01 to 12 (by ref)
:: %4 var to receive day of month, 2 digits, 01 to 31 (by ref)
:: %5 var to receive hours, 2 digits, 00 to 23 (by ref)
:: %6 var to receive minutes, 2 digits, 00 to 59 (by ref)
:: %7 var to receive seconds, 2 digits, 00 to 59 (by ref)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal ENABLEEXTENSIONS
set /a i=%1,ss=i%%60,i/=60,nn=i%%60,i/=60,hh=i%%24,dd=i/24,i/=24
set /a a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
(if %hh% LSS 10 set hh=0%hh%)&(if %nn% LSS 10 set nn=0%nn%)
if %ss% LSS 10 set ss=0%ss%
endlocal&set %7=%ss%&set %6=%nn%&set %5=%hh%&^
set %4=%dd%&set %3=%mm%&set %2=%yy%&goto :EOF
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Parameters
%1 seconds used to create calendar date and time of day (by val)
%2 var to receive year, 4 digits for all typical dates (by ref)
%3 var to receive month, 2 digits, 01 to 12 (by ref)
%4 var to receive day of month, 2 digits, 01 to 31 (by ref)
%5 var to receive hours, 2 digits, 00 to 23 (by ref)
%6 var to receive minutes, 2 digits, 00 to 59 (by ref)
%7 var to receive seconds, 2 digits, 00 to 59 (by ref)
Return Values
See parameters above.
Example
This example uses REG.EXE v2.0 to extract the InstallDate value (which is stored as seconds elapsed since 1970-01-01 00:00:00) from the Windows Registry. This is then converted to a date and time. Note the second FOR loop avoids having to use a TAB character in the DELIMS statement of the first FOR loop.
echo off & setlocal ENABLEEXTENSIONS
:: requires REG.EXE Version 2.0 or later
set key="HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
set val="InstallDate"
for /f "delims=" %%a in ('reg query %key% /v %val%^|find %val%') do (
for %%b in (%%a) do set secs=%%b
)
call :SecsToDate %secs% yy mm dd hh nn ss
echo/Windows installation date is: %yy%-%mm%-%dd% %hh%:%nn%:%ss%
goto :EOF
Remarks
Use in conjunction with DateToSecs to perform date arithmetic with a resolution of one second.
Range is from 0 to 2147483647 or (2^31)-1 seconds which gives a date range from 1970-01-01 00:00:00 to 2038-01-19 03:14:07.
|
山外有山,人外有人;低调做人,努力做事。
进入网盘(各种工具)~~ 空间~~cmd学习 |
|
2008-4-27 02:55 |
|
|
plp626
银牌会员
钻石会员
积分 2278
发帖 1020
注册 2007-11-19
状态 离线
|
『第
19 楼』:
WeekToDate
The WeekToDate function returns a calendar date from an ISO 8601 Week date.
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:WeekToDate %yn% %cw% %dw% yy mm dd
::
:: By: Ritchie Lawrence, 2002-10-04. Version 1.0
::
:: Func: Returns a calendar date from an ISO 8601 Week date.
:: For NT4/2000/XP/2003.
::
:: Args: %1 year to convert, 2 or 4 digits (by val)
:: %2 calendar week to convert, 2 digits, 01 to 53 (by val)
:: %3 day of week to convert, 1 digit, 1 to 7 (by val)
:: %4 var to receive year, 4 digits (by ref)
:: %5 var to receive month, 2 digits, 01 to 12 (by ref)
:: %6 var to receive day of month, 2 digits, 01 to 31 (by ref)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal ENABLEEXTENSIONS
set yn=%1&set cw=%2&set dw=%3
if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
set /a cw=100%cw%%%100,d=3210654
set /a z=14-1,z/=12,y=yn+4800-z,m=1+12*z-3,Jt=153*m+2
set /a Jt=Jt/5+1+y*365+y/4-y/100+y/400-32045,wt=Jt%%7
call set at=%%d:~%wt%,1%%&set /a Jt=at+Jt-3
set /a Jt=Jt+7*cw+dw-9,a=Jt+32045,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %4=%yy%&set %5=%mm%&set %6=%dd%&goto :EOF
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Parameters
%1 year to convert, 2 or 4 digits (by val)
%2 calendar week to convert, 2 digits, 01 to 53 (by val)
%3 day of week to convert, 1 digit, 1 to 7 (by val)
%4 var to receive year, 4 digits (by ref)
%5 var to receive month, 2 digits, 01 to 12 (by ref)
%6 var to receive day of month, 2 digits, 01 to 31 (by ref)
Return Values
See parameters above.
Example
@echo off & setlocal ENABLEEXTENSIONS
call :WeekToDate 2000 15 2 yy mm dd
echo/The date on day 2 of week 15 of the year 2000 is: %yy%-%mm%-%dd%
goto :EOF
Remarks
None.
|
山外有山,人外有人;低调做人,努力做事。
进入网盘(各种工具)~~ 空间~~cmd学习 |
|
2008-4-27 02:55 |
|
|
feixueOK
新手上路
积分 2
发帖 1
注册 2008-4-28
状态 离线
|
|
2008-5-7 10:56 |
|
|
joyn
中级用户
丶杏灬丶
积分 280
发帖 105
注册 2008-5-6 来自 广西
状态 离线
|
|
2008-5-7 13:06 |
|
|