批处理获取N天前的日期(批处理昨天的日期cmd).bat

 

批处理获取N天前的日期(昨天的日期).bat

 

BAT批处理获取昨天的日期:

@echo off
color 30
echo %date%   "(【注意】:支持的日期格式:年/月/日 或 年-月-日)"
pause

ECHO  ---=方法一=---
rem 计算指定天数之前的日期
set DaysAgo=1
rem 假设系统日期的格式为yyyy-mm-dd
set YE=%date:~0,4%
set MO=%date:~5,2%
set DA=%date:~8,2%
set DaysAgo=1
set/a vY1=%YE% %% 400
set/a vY2=%YE% %% 4
set/a vY3=%YE% %% 100
if %vY1%==0 (set var=true) else (if %vY2%==0 (if %vY3%==0 (set var=false) else (set var=true)) else (set var=false))
set LY=%YE%
set LM=%MO%
if %MO:~0,1%==0 (set MO=%MO:~1,1%)
if %DA:~0,1%==0 (set DA=%DA:~1,1%)
if %DA% GTR %DaysAgo% (set/a LD=%DA%-%DaysAgo%) else (
if %MO%==1 (set/a LY=%YE%-1) & (set/a LM=12+%MO%-1) & (set/a LD=31+%DA%-%DaysAgo%) else (
    set/a LM=%MO%-1
if %MO%==3 (if %var%==false (set/a LD=28+%DA%-%DaysAgo%) else (set/a LD=29+%DA%-%DaysAgo%))
for %%a in (2 4 6 8 9 11) do (if "%MO%"=="%%a" (set/a LD=31+%DA%-%DaysAgo%))
for %%b in (5 7 8 10 12) do (if "%MO%"=="%%b" (set/a LD=30+%DA%-%DaysAgo%))))
if %LM% LSS 10 set LM=0%LM:~-1%
if %LD% LSS 10 set LD=0%LD:~-1%
set HistDate=%LY%-%LM%-%LD%
echo %DaysAgo%天前的历史日期是:%HistDate%

 

BAT批处理获取昨天的日期

@echo off
color 30
echo %date%   "(【注意】:支持的日期格式:年/月/日 或 年-月-日)"
pause

ECHO  ---=方法二=---
::  :: ::  :: ::  :: ::  :: ::  :: ::  :: ::  :: ::  :: ::  :: ::  :: 
rem 计算指定天数之前的日期
set DaysAgo=1
rem 假设系统日期的格式为yyyy-mm-dd
call :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDays
set /a PassDays-=%DaysAgo%
call :DaysToDate %PassDays% DstYear DstMonth DstDay
set DstDate=%DstYear%-%DstMonth%-%DstDay%
echo %DaysAgo%天前的日期是%DstDate%
pause
goto :eof

:DateToDays %yy% %mm% %dd% days
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

:DaysToDate %days% yy mm dd
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

  

 

·

posted @ 2020-12-28 11:09  亟待!  阅读(2124)  评论(0)    收藏  举报
……