windows下批处理,取昨天的时间

本文介绍了一个批处理脚本,用于生成当前日期前一天的具体日期。脚本首先获取今天的年月日,然后通过一系列条件判断计算出昨天的年月日,并最终输出。此脚本特别考虑了月份和日期的格式化,以及不同月份天数和闰年的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@echo off
setlocal EnableDelayedExpansion

echo Generate last datetime...

set TodayYear=%date:~0,4%
set TodayMon=%date:~5,2%
set TodayDay=%date:~8,2%
if "!TodayDay!" == "08" set TodayDay=8
if "!TodayDay!" == "09" set TodayDay=9

set LastdayYear=
set LastdayMon=
set LastdayDay=

set LastdayYear=%TodayYear%
set LastdayMon=%TodayMon%
set /A LastdayDay=TodayDay-1

echo %TodayDay%
echo %LastdayDay%


if "%LastdayDay%" == "0" (
if "!LastdayMon!" == "01" (
set LastdayMon=12
set /A LastdayYear-=1
) else (
set /A LastdayMon-=1

if "!LastdayMon!" == "1" set LastdayMon=01
if "!LastdayMon!" == "2" set LastdayMon=02
if "!LastdayMon!" == "3" set LastdayMon=03
if "!LastdayMon!" == "4" set LastdayMon=04
if "!LastdayMon!" == "5" set LastdayMon=05
if "!LastdayMon!" == "6" set LastdayMon=06
if "!LastdayMon!" == "7" set LastdayMon=07
if "!LastdayMon!" == "8" set LastdayMon=08
if "!LastdayMon!" == "9" set LastdayMon=09
)

if "!LastdayMon!" == "01" set LastdayDay=31
if "!LastdayMon!" == "03" set LastdayDay=31
if "!LastdayMon!" == "04" set LastdayDay=30
if "!LastdayMon!" == "05" set LastdayDay=31
if "!LastdayMon!" == "06" set LastdayDay=30
if "!LastdayMon!" == "07" set LastdayDay=31
if "!LastdayMon!" == "08" set LastdayDay=31
if "!LastdayMon!" == "09" set LastdayDay=30
if "!LastdayMon!" == "10" set LastdayDay=31
if "!LastdayMon!" == "11" set LastdayDay=30
if "!LastdayMon!" == "12" set LastdayDay=31

if "!LastdayMon!" == "02" (
set IsLeapYear=

set /A IsLeapYear=!LastdayYear!%%400
if "!IsLeapYear!" == "0" (
set LastdayDay=29
goto MAKELASTDATE
)

set /A IsLeapYear=!LastdayYear!%%100
if "!IsLeapYear!" == "0" (
set LastdayDay=28
goto MAKELASTDATE
)

set /A IsLeapYear=!LastdayYear%%4
if "!IsLeapYear!" == "0" (
set LastdayDay=29
goto MAKELASTDATE
) else (
set LastdayDay=28
goto MAKELASTDATE
)
)
)

:MAKELASTDATE

if "%LastdayDay%" == "1" set LastdayDay=01
if "%LastdayDay%" == "2" set LastdayDay=02
if "%LastdayDay%" == "3" set LastdayDay=03
if "%LastdayDay%" == "4" set LastdayDay=04
if "%LastdayDay%" == "5" set LastdayDay=05
if "%LastdayDay%" == "6" set LastdayDay=06
if "%LastdayDay%" == "7" set LastdayDay=07
if "%LastdayDay%" == "8" set LastdayDay=08
if "%LastdayDay%" == "9" set LastdayDay=09

rem 该程序有bug 下面几句话进行修正8月1号和9月1号的日期

if !TodayMon!==08 if !TodayDay!==01 set LastdayMon=07
if !TodayMon!==08 if !TodayDay!==01 set LastdayDay=31

if !TodayMon!==09 if !TodayDay!==01 set LastdayMon=08
if !TodayMon!==09 if !TodayDay!==01 set LastdayDay=31

set LastDate=%LastdayYear%%LastdayMon%%LastdayDay%

@echo Today =%date:~0,4%%date:~5,2%%date:~8,2%
@echo Yestoday=%LastDate%
pause

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值