You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在批处理脚本中获取yyyymmdd格式的前一天日期

嘿,要在批处理里拿到前一天的yyyymmdd格式日期确实有点麻烦——毕竟原生批处理没自带日期计算的功能,不过我给你准备了两个实用的方案,看你需求选就行:

方案1:借助PowerShell实现(首推,省心又靠谱)

现在几乎所有Windows系统都自带PowerShell,用它来做日期计算简直是降维打击,完全不用操心闰年、月份天数这些坑。直接把PowerShell的计算结果捕获到批处理变量里就行,代码如下:

@echo off
setlocal enabledelayedexpansion
:: 调用PowerShell获取前一天的yyyymmdd格式日期
for /f %%a in ('powershell -Command "(Get-Date).AddDays(-1).ToString('yyyyMMdd')"') do set YESTERDAY=%%a
echo 前一天日期:!YESTERDAY!
endlocal

简单解释下:

  • (Get-Date).AddDays(-1):获取当前日期并减去1天
  • ToString('yyyyMMdd'):把日期格式转换成你要的yyyymmdd样式
  • for /f:把PowerShell输出的结果抓取到批处理的YESTERDAY变量里
方案2:纯批处理原生实现(无外部依赖)

如果你的环境不能用PowerShell,那只能用纯批处理硬写逻辑了——这时候得自己处理闰年判断、不同月份的天数问题,下面是经过验证的脚本,和你原有的日期获取逻辑兼容:

@echo off
setlocal enabledelayedexpansion

:: 先拆分当前日期的年、月、日(和你原代码的截取逻辑一致)
set "YYYY=%DATE:~10,4%"
set "MM=%DATE:~4,2%"
set "DD=%DATE:~7,2%"

:: 先给日期减1
set /a DD=%DD%-1
if !DD! lss 1 (
    :: 日期减到0了,得往前推一个月
    set /a MM=%MM%-1
    if !MM! lss 1 (
        :: 月份减到0了,得往前推一年
        set /a YYYY=%YYYY%-1
        set MM=12
    )
    :: 判断当前月份的总天数
    set "days_in_month=31"
    :: 小月都是30天
    if !MM! equ 4 set days_in_month=30
    if !MM! equ 6 set days_in_month=30
    if !MM! equ 9 set days_in_month=30
    if !MM! equ 11 set days_in_month=30
    :: 单独处理2月,判断闰年
    if !MM! equ 2 (
        set /a leap=!YYYY!%%4
        if !leap! equ 0 (
            set /a leap=!YYYY!%%100
            if !leap! equ 0 set /a leap=!YYYY!%%400
        )
        if !leap! equ 0 (
            set days_in_month=29
        ) else (
            set days_in_month=28
        )
    )
    :: 把日期设为上个月的最后一天
    set DD=!days_in_month!
)

:: 补全月份和日期的前导0,确保是两位数字
if !MM! lss 10 set MM=0!MM!
if !DD! lss 10 set DD=0!DD!

:: 组合成yyyymmdd格式
set YESTERDAY=!YYYY!!MM!!DD!
echo 前一天日期:!YESTERDAY!
endlocal

这个脚本的逻辑是:先给当前日期减1天,如果日期变成负数就退到上个月的最后一天,月份变成0就退到上一年的12月,同时处理闰年2月的特殊情况,最后补全两位数字得到目标格式。

内容的提问来源于stack exchange,提问作者Globe throttler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:28:48