目录
1、时期和时间函数简介
2、日期转星期第几天
3、日期转天数
4、日期转修正儒略日
5、日期转分钟数
6、日期转序号日期
7、日期转秒钟数
8、日期转星期日期
9、星期第几天转星期名称
10、星期名称转星期第几天
11、天数转日期
12、获取本地系统日期
13、获取本地系统时间
14、修正儒略日转日期
15、分钟数转日期
16、第几个月转月份名称
17、月份名称转第几个月
18、序号日期转日历日期
19、秒钟数转日期
20、星期日期转日历日期
1、时期和时间函数简介
概述
注:对以下函数中的算法进行优化的任何企图,都有可能导致函数在 NT4 下失败。因为圆括号是不被支持的,而且算数操作符的优先级也是错误的。
参数
当传递日期、时间给这些日期时间函数的时候,必须遵循以下格式:
年 必须是两位或者四位。从 70 到 99 之间的年份会被认为是二十世纪,从 00 到 69 之间的年份会被认为是二十一世纪。
月 必须是一位或者两位,范围是 1 到 12 之间或者 01 到 12 之间。
日 必须是一位或者两位,范围是 1 到 31 之间或者 01 到 31 之间。
小时 必须是十二小时制或者二十四小时制。对于十二小时制,小时的范围是 1 到 12 之间或者 01 到 12 之间。如果使用了十二小时制,分钟参数后面必须紧跟着“a”或者“p”(比如 00a 或者 34p)。 对于二十四小时制,小时的范围必须是 0 到 23 之间或者 00 到 23 之间。
分钟 必须是两位,范围是 00 到 59 之间。
秒钟 必须是两位,范围是 00 到 59 之间。
之所以要接受两位的年份和十二小时制,是为了兼容 DIR 命令输出结果中可能存在的不同格式。
返回值
日期时间函数返回的日期和/或时间将使用如下格式:
这些格式适用于大部分应用程序,这就让 ISO 8601 格式日期变得非常易用。如果需要,可以轻松去除以零开头的数字前面的零,方法是先在左边补上 100,再对 100 取余。比如:
@echo off & setlocal ENABLEEXTENSIONS
set var=09
set /a var=100%var%%%100
echo/Leading zero has been removed: %var%
建议格式
下面是由 ISO 8601 建议的最常用的日期时间格式简概括。
组成 | 基本格式 | 扩展格式 |
日历日期 | YYYYMMDD Eg 19991231 | YYYY-MM-DD Eg 1999-12-31 |
时间 | hhmmss Eg 235909 | hh:mm:ss Eg 23:59:09 |
日期时间 | YYYYMMDDThhmmss Eg 19991231T235909 | YYYY-MM-DDThh:mm:ss Eg 1999-12-31T23:59:09 |
序号日期 | YYYYDDD Eg 1999365 | YYYY-DDD Eg 1999-365 |
星期日期 | YYYYWwwD Eg 1999W525 | YYYY-Www-D Eg 1999-W52-5 |
参考
HEASARC 在线日期转换
日历学习和转换算法
ISO 8601 日期时间标准概述
ISO 8601:2000 PDF格式文档
Gregorian Civil 日期转换器
2、DateToDOW
对于一个给定的日期,DateToDOW 函数返回它对应的所在星期的第几天。
| ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :DateToDOW %yy% %mm% %dd% dow :: :: 作者: Ritchie Lawrence, 2003-04-29. 版本 1.1 :: :: 功能: 获取某一日期是其所在星期的第几天,1 = 星期一,7 = 星期日 :: 适用于 NT4/2000/XP/2003. :: :: 参数: %1 待转换的年,两位或者四位(传值调用) :: %2 待转换的月,可以以零开头(传值调用) :: %3 待转换的日,可以以零开头(传值调用) :: %4 该变量用于接收所在星期的第几天,1 到 7 (引用调用) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS set yy=%1&set mm=%2&set dd=%3 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,dow=153*m+2 set /a dow=dow/5+dd+y*365+y/4-y/100+y/400-2472630,dow%%=7,dow+=1 endlocal&set %4=%dow%&goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
参数
%1 待转换的年,两位或者四位(传值调用)
%2 待转换的月,可以以零开头(传值调用)
%3 待转换的日,可以以零开头(传值调用)
%4 该变量用于接收所在星期的第几天,1 到 7 (引用调用)
返回值
见上述参数。
实例
@echo off & setlocal ENABLEEXTENSIONS call :GetDate y m d call :DateToDOW %y% %m% %d% dow call :DayName %dow% day echo/今天是星期的第 %day% 天 goto :EOF |
备注
函数 DateToWeek 除了获取年和月之外,也可获取日期所在星期的第几天。
参考
DateToWeek, DayName, DayNumber
3、DateToDays
函数 DateToDays 可以获取从 1970-01-01 到给定的日期之间所经过的天数。
| ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :DateToDays %yy% %mm% %dd% days :: :: 作者:Ritchie Lawrence, 2002-09-26. 版本 1.0 :: :: 功能:返回从 1970 年 1 月 1 日到给定的日期之间所经过的天数。 :: 适用于 NT4/2000/XP/2003. :: :: 参数:%1 待转换的年,两位或者四位(传值调用) :: %2 待转换的月,可以以零开头(传值调用) :: %3 待转换的日,可以以零开头(传值调用) :: %4 该变量用于接收所经过的天数(引用调用) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS set yy=%1&set mm=%2&set dd=%3 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 endlocal&set %4=%j%&goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
参数
%1 待转换的年,两位或者四位(传值调用)
%2 待转换的月,可以以零开头(传值调用)
%3 待转换的日,可以以零开头(传值调用)
%4 该变量用于接收所经过的天数(引用调用)
返回值
见上述参数。
实例
@echo off & setlocal ENABLEEXTENSIONS
call :DateToDays 2003 12 31 days
echo/从 1970-01-01 到 2003-12-31 之间所经过的天数是:%days%
goto :EOF
备注
和 DaysToDate 函数一起使用,可以作为一个指定日期的日期函数解决方案。这个函数和 DateToMJD 函数基本相同,只是使用的参考日期(第零天)不同而已。参考日期 1970-01-01 允许 MinsToDays 函数和 SecsToDays 函数的互用性,因为它们都使用这个相同的参考日期。
另外,很多 Windows 注册表也包含了自从 1970-01-01 00:00:00 (UTC,协调世界时)以来的秒数。
参考
DaysToDate, MJDToDate
4、DateToMJD
函数 DateToMJD 可以把一个协调世界时(UTC)日期转换为修正儒略日(MJD)。
| ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :DateToMJD %yy% %mm% %dd% MJD :: :: 作者:Ritchie Lawrence, 2002-06-15. 版本 1.0 :: :: 功能:把一个协调世界时(UTC)日期转换为修正儒略日(MJD) :: 参考日期(第零天)是 1858 年 11 月 17 日 :: 适用于 NT4/2000/XP/2003. :: :: 参数:%1 待转换的年,两位或者四位(传值调用) :: %2 待转换的月,可以以零开头(传值调用) :: %3 待转换的日,可以以零开头(传值调用) :: %4 该变量用于接收修正儒略日(引用调用) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS set yy=%1&set mm=%2&set dd=%3 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-2432046 endlocal&set %4=%j%&goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
参数
%1 待转换的年,两位或者四位(传值调用)
%2 待转换的月,可以以零开头(传值调用)
%3 待转换的日,可以以零开头(传值调用)
%4 该变量用于接收修正儒略日(引用调用)
返回值
见上述参数。
实例
@echo off & setlocal ENABLEEXTENSIONS
call :DateToMJD 1999 12 31 x
echo/1999-12-31 的修正儒略日是:%x%
goto :EOF
备注
和 MJDToDate 函数一起使用,可以作为一个指定日期的日期函数解决方案。比如,使用 MJDToDate 把一个日期转换为修正儒略日(MJD),然后加上/减去一个天数, 最后再用 DateToMJD 转换为日期。
参考
MJDToDate, GetDate
5、DateToMins
函数 DateToMins 可以获取从 1970-01-01 00:00 到指定日历日期之间所经过的分钟数。
| ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :DateToMins %yy% %mm% %dd% %hh% %mm% result :: :: 作者:Ritchie Lawrence, updated 2003-04-03. 版本 1.1 :: :: 功能:返回自从 1970-01-01 00:00 到指定日期之间所经过的分钟数 :: 适用于 NT4/2K/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 该变量用于接收所经过的分钟数(引用调用) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS set yy=%1&set mm=%2&set dd=%3&set hh=%4&set nn=%5 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,j=j*1440+hh*60+nn endlocal&set %6=%j%&goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
参数
%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 该变量用于接收所经过的分钟数(引用调用)
返回值
见上述参数。
实例
@echo off & setlocal ENABLEEXTENSIONS call :GetDate y m d call :GetTime hh mm ss tt call :DateToMins %y% %m% %d% %hh% %mm% mins echo/从 1970-01-01 00:00 到 %y% %m% %d% %hh% %mm% 之间所经过的分钟数是:%mins% goto :EOF |
备注
和 MinsToDate 函数一起使用,可以作为一个指定分钟的日期函数解决方案。
日期范围是从 1970-01-01 00:00 到 6053-01-23 02:07,也就是给定了范围是 0 到 2147483647 或者 (2^31)-1 的分钟数。
参考
MinsToDate
6、DateToOrdinal
函数 DateToOrdinal 通过日历日期获取 ISO 8601 序号日期。
| ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :DateToOrdinal %yy% %mm% %dd% year doy :: :: 作者:Ritchie Lawrence, updated 2002-11-22. 版本 1.1 :: :: 功能:通过日历日期获取 ISO 8601 序号日期。 :: 适用于 NT4/2000/XP/2003. :: :: 参数:%1 待转换的年,两位或者四位(传值调用) :: %2 待转换的月,可以以零开头(传值调用) :: %3 待转换的日,可以以零开头(传值调用) :: %4 该变量用于接收年份,四位(引用调用) :: %5 该变量用于接收一年中的第几天,001 到 366(引用调用) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS set yy=%1&set mm=%2&set dd=%3 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-32045 set /a y=yy+4799,k=y*365+y/4-y/100+y/400-31738,o=j-k+1 if %o% LSS 100 set o=0%o%&if %o% LSS 10 set o=00%o% endlocal&set %4=%yy%&set %5=%o%&goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
参数
%1 待转换的年,两位或者四位(传值调用)
%2 待转换的月,可以以零开头(传值调用)
%3 待转换的日,可以以零开头(传值调用)
%4 该变量用于接收年份,四位(引用调用)
%5 该变量用于接收一年中的第几天,001 到 366(引用调用)
返回值
见上述参数。
实例
@echo off & setlocal ENABLEEXTENSIONS
call :GetDate y m d
call :DateToOrdinal %y% %m% %d% year doy
echo/今天(序号日期)是:%year%-%doy%
goto :EOF
备注
无。
参考
OrdinalToDate
7、DateToSecs
函数 DateToSecs 可以获取从 1970-01-01 00:00:00 到指定日历日期之间所经过的秒钟数。
| ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :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 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
参数
%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 该变量用于接收所经过的秒钟数(引用调用)
返回值
见上述参数。
实例
@echo off & setlocal ENABLEEXTENSIONS call :GetDate y m d call :GetTime hh mm ss tt call :DateToSecs %y% %m% %d% %hh% %mm% %ss% secs echo/从 1970-01-01 00:00:00 到 %y% %m% %d% %hh% %mm% %ss% 所经过的秒数是:%secs% goto :EOF |
备注
和 SecsToDate 函数一起使用,可以作为一个指定秒钟的日期函数解决方案。另外,很多 Windows 注册日期也包含了自从 1970-01-01 00:00:00 (UTC,协调世界时)以来的秒数。
日期范围是从 1970-01-01 00:00:00 到 2038-01-19 03:14:07,也就是给定了范围是 0 到 2147483647 或者 (2^31)-1 的秒钟数。
参考
SecsToDate
8、DateToWeek
函数 DateToWeek 通过日历日期获取 ISO 8601 星期日期。
| ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :DateToWeek %yy% %mm% %dd% yn cw dw :: :: 作者:Ritchie Lawrence, Updated 2002-11-20. 版本 1.1 :: :: 功能:通过日历日期获取 ISO 8601 星期日期。 :: 适用于 NT4/2000/XP/2003. :: :: 参数:%1 待转换的年,两位或者四位(传值调用) :: %2 待转换的月,可以以零开头(传值调用) :: %3 待转换的日,可以以零开头(传值调用) :: %4 该变量用于接收年份,四位(引用调用) :: %5 该变量用于接收日历星期,两位,01 到 53(引用调用) :: %6 该变量用于接收星期的第几天,一位,1 到 7(引用调用) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS set yy=%1&set mm=%2&set dd=%3 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,Jd=153*m+2 set /a Jd=Jd/5+dd+y*365+y/4-y/100+y/400-32045 set /a y=yy+4798,Jp=y*365+y/4-y/100+y/400-31738,t=Jp+3,Jp=t-t%%7 set /a y=yy+4799,Jt=y*365+y/4-y/100+y/400-31738,t=Jt+3,Jt=t-t%%7 set /a y=yy+4800,Jn=y*365+y/4-y/100+y/400-31738,t=Jn+3,Jn=t-t%%7 set /a Jr=%Jp%,yn=yy-1,yn+=Jd/Jt,yn+=Jd/Jn if %Jd% GEQ %Jn% (set /a Jr=%Jn%) else (if %Jd% GEQ %Jt% set /a Jr=%Jt%) set /a diff=Jd-Jr,cw=diff/7+1,wd=diff%%7,wd+=1 if %cw% LSS 10 set cw=0%cw% endlocal&set %4=%yn%&set %5=%cw%&set %6=%wd%&goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
参数
%1 待转换的年,两位或者四位(传值调用)
%2 待转换的月,可以以零开头(传值调用)
%3 待转换的日,可以以零开头(传值调用)
%4 该变量用于接收年份,四位(引用调用)
%5 该变量用于接收日历星期,两位,01 到 53(引用调用)
%6 该变量用于接收星期的第几天,一位,1 到 7(引用调用)
返回值
见上述参数。
实例
@echo off & setlocal ENABLEEXTENSIONS
call :GetDate y d m
call :DateToWeek %y% %m% %d% yn cw dw
echo/今天(ISO 8601 星期日期格式)是:%yn%-W%cw%-%dw%
goto :EOF
备注
无。
参考
WeekToDate
9、DayName
函数 DayName 通过星期的第几天来获取该日的星期名称。
| ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :DayName %d% day :: :: 作者:Ritchie Lawrence, 2002-10-04. 版本 1.0 :: :: 功能:通过星期的第几天来获取该日的星期名称,1=星期一, 7=星期日。 :: 适用于 NT4/2000/XP/2003. :: :: 参数:%1 待转换的星期的第几天,1 到 7(传值调用) :: %2 该变量用于接收该日的星期名称(引用调用) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS for /f "tokens=%1" %%a in ('echo/星期一 星期二 星期三 星期四 星期五^ 星期六 星期日') do endlocal&set %2=%%a&goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
参数
%1 待转换的星期的第几天,1 到 7(传值调用)
%2 该变量用于接收该日的星期名称(引用调用)
返回值
见上述参数。
实例
@echo off & setlocal ENABLEEXTENSIONS
call :DayName 3 day
echo/星期的第三天是:%day%
goto :EOF
备注
1 代表星期一,7代表星期日。
参考
DayNumber, DateToWeek, WeekToDate
10、DayNumber
函数 DayNumber 通过星期名称获取该日是星期的第几天。
| ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :DayNumber %Weekday% dow :: :: 作者:Ritchie Lawrence, 2003-05-14. 版本 1.0 :: :: 功能:通过星期名称获取该天是星期的第几天。如果没有匹配值,则返回空。 :: 适用于 NT4/2000/XP/2003. :: :: 参数:%1 待转换的星期名称(传值调用) :: %2 该变量用于接收该日是星期的第几天(引用调用) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS & set i=0 for %%a in (星期一 星期二 星期三 星期四 星期五 星期六 星期日) do ( set /a i+=1 & echo/%1|findstr /i /b "%%a" >nul && call set dow=%%i%%) endlocal&set %2=%dow%&goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
参数
%1 待转换的星期名称(传值调用)
%2 该变量用于接收该日是星期的第几天(引用调用)
返回值
如果星期名称是非法的,返回值将会为空。
实例
@echo off & setlocal ENABLEEXTENSIONS call :DayNumber 星期二 dow echo/星期二是一个星期中的第 %dow% 天 goto :EOF |
备注
星期一是 1,星期日是 7。
参考
DayName, DateToWeek, WeekToDate
11、DaysToDate
函数 DaysToDate 把从 1970-01-01 到指定日期之间所经过的天数转换为日历日期。
| ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :DaysToDate %days% yy mm dd :: :: 作者:Ritchie Lawrence, 2002-06-15. 版本 1.1 :: :: 功能:从 1970-01-01 到指定日期之间所经过的天数对应的日历日期。 :: 适用于 NT4/2000/XP/2003. :: :: 参数:%1 从 1970-01-01 到指定日期之间所经过的天数(传值调用) :: %2 该变量用于接收年,四位(引用调用) :: %3 该变量用于接收月,两位,01-12(引用调用) :: %4 该变量用于接收日,两位,01-31(引用调用) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS set /a a=%1+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%) endlocal&set %2=%yy%&set %3=%mm%&set %4=%dd%&goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
参数
%1 从 1970-01-01 到指定日期之间所经过的天数(传值调用)
%2 该变量用于接收年,四位(引用调用)
%3 该变量用于接收月,两位,01-12(引用调用)
%4 该变量用于接收日,两位,01-31(引用调用)
返回值
见上述参数。
实例
@echo off & setlocal ENABLEEXTENSIONS
call :DaysToDate 12345 y m d
echo/1970-01-01 加上 12345 天是:%y%-%m%-%d%
goto :EOF
Remarks
和 DateToDays 函数一起使用,可以作为一个指定日期的日期函数解决方案。
参考
DateToDays
12、GetDate
函数 GetDate 获取本地系统日期。
| ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :GetDate yy mm dd :: :: 作者:Ritchie Lawrence, 2002-06-15. 版本 1.0 :: :: 功能:把本地系统日期赋值给参数 1 到 3。 :: 适用于 NT4/2000/XP/2003. :: :: 参数:%1 该变量用于接收年,四位(引用调用) :: %2 该变量用于接收月,两位,01 到 12(引用调用) :: %3 该变量用于接收日,两位,01 到 31(引用调用) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS ::set t=2&if "%date%z" LSS "A" set t=1 ::for /f "skip=1 tokens=2-4 delims=(-)" %%a in ('echo/^|date') do ( :: for /f "tokens=%t%-4 delims=.-/ " %%d in ('date/t') do ( :: set %%a=%%d&set %%b=%%e&set %%c=%%f)) set "first=" for /f "tokens=1-3 delims=.-/ " %%a in ('date/t') do ( if not defined first set first=1&set yy=%%a&set mm=%%b&set dd=%%c) endlocal&set %1=%yy%&set %2=%mm%&set %3=%dd%&goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
参数
%1 该变量用于接收年,四位(引用调用)
%2 该变量用于接收月,两位,01 到 12(引用调用)
%3 该变量用于接收日,两位,01 到 31(引用调用)
返回值
见上述参数。
实例
@echo off & setlocal ENABLEEXTENSIONS
call :GetDate y m d
echo/今天是:%y%-%m%-%d%
pause>nul
goto :EOF
备注
这个函数依赖于英文版 Windows 的区域设置。对于非英文版的 Windows,你可能需要根据 DATE 命令的输出结果来修改函数的最后一行。在命令行提示符中输入 DATE,然后按两次回车键。经典法语版本 Windows 的输出是:
La date du jour est : 31/01/2007
Entrez la nouvelle date : (jj-mm-aa)
在第二行中,“aa”表示年,“jj”表示月,所以你需要编辑函数的最后一行,把“yy”变成“aa”,把“dd”变成“jj”。像这样:
endlocal&set %1=%aa%&set %2=%mm%&set %3=%jj%&goto :EOF
要想进一步学习该函数,参阅 the alt.msdos.batch.nt 中的 "格式化日期"。
参考
GetTime
13、GetTime
函数 GetTime 获取本地系统时间。
| ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :GetTime hh mm ss tt :: :: 作者:Ritchie Lawrence, 2007-05-12. 版本 1.3 :: :: 功能:把本地系统日期赋值给参数 1 到 4。 :: 适用于 NT4/2000/XP/2003 :: :: 参数:%1 该变量用于接收小时,两位,00 到 23(引用调用) :: %2 该变量用于接收分钟,两位,00 到 59(引用调用) :: %3 该变量用于接收秒钟,两位,00 到 59(引用调用) :: %4 该变量用于接收百分之一秒,两位,00 到 99(引用调用) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS set "first=" for /f "tokens=2-5 delims=:,. " %%a in ('echo/^|time') do ( if not defined first set first=1&set hh=%%a&set mm=%%b&set ss=%%c&set cs=%%d) if 1%hh% LSS 20 set hh=0%hh% endlocal&set %1=%hh%&set %2=%mm%&set %3=%ss%&set %4=%cs%&goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
参数
%1 该变量用于接收小时,两位,00 到 23(引用调用)
%2 该变量用于接收分钟,两位,00 到 59(引用调用)
%3 该变量用于接收秒钟,两位,00 到 59(引用调用)
%4 该变量用于接收百分之一秒,两位,00 到 99(引用调用)
返回值
见上述参数。
实例
@echo off & setlocal ENABLEEXTENSIONS
call :GetTime hh mm ss tt
echo/现在时间是:%hh%:%mm%:%ss%
pause>nul
goto :EOF
备注
这个函数依赖于英文版 Windows 的区域设置。
更新:在delims后面增加了一个都好作为列分隔符 - 感谢“Alvydas”。
参考
GetDate
14、MJDToDate
函数 MJDToDate 可以把一个修正儒略日(MJD)日期转换为协调世界时(UTC)。
| ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :MJDToDate %MJD% yy mm dd :: :: 作者:Ritchie Lawrence, 2002-06-15. 版本 1.1 :: :: 功能:把一个修正儒略日(MJD)日期转换为协调世界时(UTC) :: 参考日期(第零天)是 1858 年 11 月 17 日 :: 适用于 NT4/2000/XP/2003. :: :: Args: %1 待转换修正儒略日(传值调用) :: %2 待转换的年,四位(引用调用) :: %3 待转换的月,两位,范围是 01 到 12(引用调用) :: %4 待转换的日,两位,范围是 01 到 31(引用调用) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS set /a a=%1+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 %2=%yy%&set %3=%mm%&set %4=%dd%&goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
Parameters
%1 待转换修正儒略日(传值调用)
%2 待转换的年,四位(引用调用)
%3 待转换的月,两位,范围是 01 到 12(引用调用)
%4 待转换的日,两位,范围是 01 到 31(引用调用)
返回值
见上述参数。
实例
@echo off & setlocal ENABLEEXTENSIONS
call :MJDToDate 55555 y m d
echo/修正儒略日 55555 是:%y%-%m%-%d% (圣诞节!)
备注
和 DateToMJD 函数一起使用,可以作为一个指定日期的日期函数解决方案。比如,使用 DateToMJD 把一个日期转换为修正儒略日(MJD),然后加上/减去一个天数, 最后再用 MJDToDate 转换为日期。
参考
DateToMJD
15、MinsToDate
函数 MinsToDate 可以通过自从 1970-01-01 00:00 所经过的分钟数转换为日历日期。
| ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :MinsToDate %mins% yy mm dd hh nn :: :: 作者:Ritchie Lawrence, updated 2003-07-13. 版本 1.1 :: :: 功能:把自从 1970-01-01 00:00 所经过的分钟数转换为日历日期。 :: 适用于 NT4/2K/XP/2003. :: :: 参数:%1 待转换为日历日期的分钟数(传值调用) :: %2 该变量用于接收年,四位(引用调用) :: %3 该变量用于接收月,两位,范围是 01 到 12(引用调用) :: %4 该变量用于接收日,两位,范围是 01 到 31(引用调用) :: %5 该变量用于接收小时,两位,范围是 00 到 23(引用调用) :: %6 该变量用于接收分钟,两位,范围是 00 到 59(引用调用) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS set /a i=%1,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%) endlocal&set %6=%nn%&set %5=%hh%&set %4=%dd%&^ set %3=%mm%&set %2=%yy%&goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
参数
%1 待转换为日历日期的分钟数(传值调用)
%2 该变量用于接收年,四位(引用调用)
%3 该变量用于接收月,两位,范围是 01 到 12(引用调用)
%4 该变量用于接收日,两位,范围是 01 到 31(引用调用)
%5 该变量用于接收小时,两位,范围是 00 到 23(引用调用)
%6 该变量用于接收分钟,两位,范围是 00 到 59(引用调用)
返回值
见上述参数。
实例
@echo off & setlocal ENABLEEXTENSIONS
call :GetDate y m d
call :GetTime hh mm ss tt
call :DateToMins %y% %m% %d% %hh% %mm% mins
set /a mins+=15
call :MinsToDate %mins% y m d hh mm
echo/15分钟之后的日期时间是:%y%-%m%-%d% %hh%:%mm%
goto :EOF
备注
和 DateToMins 函数一起使用,可以作为一个指定分钟的日期函数解决方案。
分钟范围是从 0 到 2147483647 或者 (2^31)-1 ,也就是日期范围从 1970-01-01 00:00 到 6053-01-23 02:07。
参考
DateToMins
16、MonthName
函数 MonthName 通过某个月是当年的第几个月来获取该月的名称。
| ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :MonthName %mm% month :: :: 作者:Ritchie Lawrence, 2002-10-04. 版本 1.0 :: :: 功能:通过某个月是当年的第几个月来获取该月名称。 :: 适用于 NT4/2000/XP/2003. :: :: 参数:%1 某个月是当年的第几个月,范围是 1 到 12 或者 01 到 12(传值调用) :: %2 该变量用于接收该月的名称(引用调用) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS&set /a m=100%1%%100 for /f "tokens=%m%" %%a in ('echo/一月 二月 三月 四月 五月 六月 七月 八月^ 九月 十月 十一月 十二月' ) do endlocal&set %2=%%a&goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
参数
%1 某个月是当年的第几个月,范围是 1 到 12 或者 01 到 12(传值调用)
%2 该变量用于接收该月的名称(引用调用)
返回值
见上述参数。
实例
@echo off & setlocal ENABLEEXTENSIONS
call :GetDate yy mm dd
call :MonthName %mm% month
echo/当前的月份是:%month%
goto :EOF
备注
无。
参考
MonthNumber
17、MonthNumber
函数 MonthNumber 通过月份名称来获取该月是当年的第几个月。
| ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :MonthNumber %month% mm :: :: 作者:Ritchie Lawrence, 2003-05-14. 版本 1.0 :: :: 功能:通过月份名称来获取该月是当年的第几个月。 :: 返回值是 01 到12,如果没有匹配项,将返回空。 :: 适用于 NT4/2000/XP/2003. :: :: 参数:%1 待转换的月份名称,范围是一月到十二月(传值调用) :: %2 该变量用于接收此月是当年的第几个月(引用调用) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS & set i=0 for %%a in (一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月^ 十二月) 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 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
参数
%1 待转换的月份名称,范围是一月到十二月(传值调用)
%2 该变量用于接收此月是当年的第几个月(引用调用)
返回值
返回值是 01 到12,如果没有匹配项,将返回空。
实例
@echo off & setlocal ENABLEEXTENSIONS
call :MonthNumber 四月 mm
echo/四月是第 %mm% 个月
goto :EOF
备注
无。
参考
MonthName
18、OrdinalToDate
函数 OrdinalToDate 通过 ISO 8601 序号日期获取日历日期。
| ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :OrdinalToDate %year% %doy% yy mm dd :: :: 作者:Ritchie Lawrence, 2002-09-29. 版本 1.0 :: :: 功能:通过 ISO 8601 序号日期获取日历日期。 :: 适用于 NT4/2000/XP/2003. :: :: 参数:%1 待转换的年,两位或者四位(传值调用) :: %2 一年中的第几天,001 到 366(传值调用) :: %3 该变量用于接收年,四位(引用调用) :: %4 该变量用于接收月,两位,范围是 01 到 12(引用调用) :: %5 该变量用于接收日,两位,范围是 01 到 31(引用调用) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 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 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
参数
%1 待转换的年,两位或者四位(传值调用)
%2 一年中的第几天,001 到 366(传值调用)
%3 该变量用于接收年,四位(引用调用)
%4 该变量用于接收月,两位,范围是 01 到 12(引用调用)
%5 该变量用于接收日,两位,范围是 01 到 31(引用调用)
返回值
见上述参数。
实例
@echo off & setlocal ENABLEEXTENSIONS
call :OrdinalToDate 2000 090 y m d
echo/2000年的第90天是:%y%-%m%-%d%
goto :EOF
备注
第二个参数(一年中的第几天)的范围必须是 001 到 366。
参考
DateToOrdinal
19、SecsToDate
函数 SecsToDate 把自从 1970-01-01 00:00:00 所经过的秒钟数转换为日期。
| ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :SecsToDate %secs% yy mm dd hh nn ss :: :: 作者:Ritchie Lawrence, updated 2002-07-24. 版本 1.1 :: :: Func: 把自从 1970-01-01 00:00:00 所经过的秒钟数转换为日期。 :: 适用于 NT4/2000/XP/2003. :: :: 参数:%1 所经过的秒钟数(传值调用) :: %2 该变量用于接收年,四位(引用调用) :: %3 该变量用于接收月,两位,范围是 01 到 12(引用调用) :: %4 该变量用于接收日,两位,范围是 01 到 31(引用调用) :: %5 该变量用于接收小时,两位,范围是 00 到 23(引用调用) :: %6 该变量用于接收分钟,两位,范围是 00 到 59(引用调用) :: %7 该变量用于接收秒钟,两位,范围是 00 到 59(引用调用) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 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 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
参数
%1 所经过的秒钟数(传值调用)
%2 该变量用于接收年,四位(引用调用)
%3 该变量用于接收月,两位,范围是 01 到 12(引用调用)
%4 该变量用于接收日,两位,范围是 01 到 31(引用调用)
%5 该变量用于接收小时,两位,范围是 00 到 23(引用调用)
%6 该变量用于接收分钟,两位,范围是 00 到 59(引用调用)
%7 该变量用于接收秒钟,两位,范围是 00 到 59(引用调用)
返回值
见上述参数。
实例
这个实例中使用了 REG.EXE v2.0 来获取 Windows 注册表中的 InstallDate 键值,(该键值存放了自从 1970-01-01 00:00:00 所经过的秒钟数)然后转换为日期时间。注,第二个 FOR 循环应避免使用制表符(TAB),因为第一个 FOR 循环的 DELIMS 声明了使用制表符(TAB)作为列分隔符。
@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 的安装日期是:%yy%-%mm%-%dd% %hh%:%nn%:%ss%
goto :EOF
备注
和 DateToSecs 函数一起使用,可以作为一个指定秒钟的日期函数解决方案。另外,很多 Windows 注册日期也包含了自从 1970-01-01 00:00:00 (UTC,协调世界时)以来的秒数。
秒钟数范围是从 0 到 2147483647 或者 (2^31)-1 ,也就是日期范围 1970-01-01 00:00:00 到 2038-01-19 03:14:07。
参考
DateToSecs
20、WeekToDate
函数 WeekToDate 通过 ISO 8601 星期日期获取日历日期。
| ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :WeekToDate %yn% %cw% %dw% yy mm dd :: :: 作者:Ritchie Lawrence, 2002-10-04. 版本 1.0 :: :: 功能:通过 ISO 8601 星期日期获取日历日期。 :: 适用于 NT4/2000/XP/2003. :: :: 参数:%1 待转换的年,两位或者四位(传值调用) :: %2 待转换的日历星期,两位,01 到 53(传值调用) :: %3 待转换的星期的第几天,一位,1 到 7(传值调用) :: %4 该变量用于接收年,四位(引用调用) :: %5 该变量用于接收月,两位,范围是 01 到 12(引用调用) :: %6 该变量用于接收日,两位,范围是 01 到 31(引用调用) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 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 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
参数
%1 待转换的年,两位或者四位(传值调用)
%2 待转换的日历星期,两位,01 到 53(传值调用)
%3 待转换的星期的第几天,一位,1 到 7(传值调用)
%4 该变量用于接收年,四位(引用调用)
%5 该变量用于接收月,两位,范围是 01 到 12(引用调用)
%6 该变量用于接收日,两位,范围是 01 到 31(引用调用)
返回值
见上述参数。
实例
@echo off & setlocal ENABLEEXTENSIONS
call :WeekToDate 2000 15 2 yy mm dd
echo/2000年第15个星期的第二天是:%yy%-%mm%-%dd%
goto :EOF
备注
无。
参考
DateToWeek