中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-08 06:49
48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » 求助,计算N天前的日期
可打印版本  711 / 4
第1楼 a303862146 发表于 2008-04-23 03:43
初级用户 发帖 10 积分 32
求助,计算N天前的日期
@echo off
: 1
set /p d=输入向前推的天数
set nian=%date:~0,4%
set yue=%date:~5,2%
set ri=%date:~8,2%
for %%i in (1 3 5 7 8 10 12) do (if %yue% equ %%i if %ri% gtr 31 set ri=31)
for %%i in (4 6 9 11) do (if %yue% equ %%i if %ri% gtr 30 set ri=30)
for %%i in (2) do (if %yue% equ %%i if %ri% gtr 29 set ri=29)
if %ri% leq 0 set /a %yue%-1
if %yue% leq 0 set /a %nian%-1
set c=%nian%%yue%%ri%
set /a q=%c%-%d%
echo %q%
pause
goto 1
什么地方不对?能不能帮我改下。。。谢谢

───────────────── 版务记录 ─────────────────
执行:HAT
操作:在帖子标题中增加搜索关键字
说明:原标题"求助,帮忙改下这个关于日期的批处理"不利于论坛搜索
───────────────── 版务记录 ─────────────────


[ Last edited by HAT on 2008-10-19 at 23:50 ]
第2楼 qwd 发表于 2008-04-23 04:44
初级用户 发帖 56 积分 161
第一:由for己经设定日数为 29-30 三数其中之一,不会是其它数了.
第二:日月不可能小于或等于0
第三:年月日三个单位不统一,怎么能放在一起计算.
第3楼 bat-zw 发表于 2008-04-23 10:59
金牌会员 发帖 1,276 积分 3,105
我以前写的,你参考吧:
计算任意日期:
第4楼 terse 发表于 2008-04-23 11:06
银牌会员 发帖 946 积分 2,404
@echo off
set p1=%date:~0,4%
set p2=%date:~5,2%
set p3=%date:~8,2%
:tm
for /l %%a in (1,1,3) do for /f "delims=0 tokens=*" %%i in ("%p%%a%") do set p%%a=%%i
set/a pn="!(p1%%4) & !(!(p1%%100)) | !(p1%%400)"
for /f "tokens=%p2%" %%i in ("0 31 59 90 120 151 181 212 243 273 304 334") do set/a n=%%i+p3
if %P2% gtr 2 set/a n+=pn
if %P2% equ 2 if %P3% equ 29 if %pn% equ 0 echo %p1%年不是闰年 所以%P2%月不会有%P3%日&pause&goto end
echo.
echo %p2%月%p3%日 是 %p1% 年的第 %n% 天&set p1=
echo.
echo. 输入日期查询任意天
echo.
:end
set/p p1=输入年(格式2008):
set/p p2=输入月(格式1:
set/p p3=输入日(格式1):
if "%p1%"=="" goto exit
goto tm
第5楼 terse 发表于 2008-04-23 11:09
银牌会员 发帖 946 积分 2,404


[ Last edited by terse on 2008-4-23 at 11:11 AM ]
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023