中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-10 03:42
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已放弃请勿进]关于对任意时间的回溯 查看 2,435 回复 32
31 发表于 2008-06-02 00:46 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
Originally posted by 26933062 at 2008-6-2 00:43:

你这个难道不是减去整2个月吗?
先减去分,时、天、结果为:2008年4月1日19点9分
再减去2整月、即:4减2 得到 2008年2月1日19点9分

请看我的计算顺序,如将天改为10天前就不是整减两个月了吧。
批处理之家新域名:www.bathome.net
32 发表于 2008-06-02 02:59 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
头大了 没详细测试

@echo off
set/p times=输入年月日小时分
for /f "tokens=1-5 delims= " %%a in ("%times%") do set /a yy=%%a,mm=%%b,tt=%%c,hh=%%d,ss=%%e
for /f "tokens=1-3 delims=-/\:. " %%i in ("%date%") do set /a p1=%%i,p2=100%%j%%100,p3=100%%k%%100
for /f "tokens=1-3 delims=:" %%i in ('time/t') do set /a t1=100%%i%%100,t2=100%%j%%100
set/a s2=ss%%60,t1-=ss/60%%24,t2-=s2,hh+=ss/60
if %t2% lss 0 set/a t2+=60
if %t1% lss 0 set/a t1+=24
set/a h1=hh%%24,tt+=(hh-h1)/24,t1-=h1
if %t1% lss 0 set/a t1+=24,tt+=1
set/a p1-=yy
set/a m2=mm%%12,p1-=(mm+p2)/12,p2-=m2
if %p2% leq 0 set/a p2+=12
if %p3% gtr %TT% goto ppp
:nxt
set/a p2-=1
if %p2% equ 0 set/a p1-=1&&set p2=12
set/a PN2="!(p1%%4) & !(!(p1%%100)) | !(p1%%400)",PN2=28+PN2
for /f "tokens=%p2%" %%i in ("31 %pN2% 31 30 31 30 31 31 30 31 30 31") do set/a p3=%p3%+%%i
if %p3% leq %tt% goto nxt
:ppp
set/a p3=%p3%-%tt%
setlocal enabledelayedexpansion
for %%i in (p2 p3 t1 t2) do if !%%i! lss 10 set %%i=0!%%i!
echo %p1%年%p2%月%p3%日%t1%时%t2%分
pause&goto :eof
简单!简单!再简单!
33 发表于 2008-10-13 08:43 ·  中国 广东 深圳 电信
初级用户
★★
积分 185
发帖 88
注册 2008-05-12 18:46
18年会员
UID 118511
性别 男
状态 离线
有胆略尝式就是好样的!!
论坛跳转: