DOS 下怎么将昨天的日期格式显示
当前的好说%date:~0,4%%date:~5,2%%date:~8,2%显示为YYYYMMDD可是前一天的怎么弄?假如今天是2010/03/29,我怎么得到20100...
当前的好说 %date:~0,4%%date:~5,2%%date:~8,2% 显示为YYYYMMDD
可是前一天的怎么弄?
假如今天是2010/03/29,我怎么得到20100328!!
我要的结果就是一个字符串,这个字符串就是昨天的日期,如何用批处理获得?
问题已解决了
set now=%date:~8,2%
set /a yester=now-1
echo %date:~0,4%%date:~5,2%%yester% 展开
可是前一天的怎么弄?
假如今天是2010/03/29,我怎么得到20100328!!
我要的结果就是一个字符串,这个字符串就是昨天的日期,如何用批处理获得?
问题已解决了
set now=%date:~8,2%
set /a yester=now-1
echo %date:~0,4%%date:~5,2%%yester% 展开
3个回答
展开全部
呵呵,楼主在学DOS啊。
要解决的就是每月一号的前一天是多少的问题
本年是否为闰年,本月奇偶
学过C语言的话,书上有算法
----网上找了个,如下-------
@echo off
set dt=%date:~0,10%
rem date format is "YYYY-MM-DD"
rem set /P dt="Input Date: "
set dy=%dt:~0,4%
set dm=%dt:~5,2%
set dd=%dt:~8,2%
if %dm%%dd%==0101 goto L01
if %dm%%dd%==0201 goto L02
if %dm%%dd%==0301 goto L07
if %dm%%dd%==0401 goto L02
if %dm%%dd%==0501 goto L04
if %dm%%dd%==0601 goto L02
if %dm%%dd%==0701 goto L04
if %dm%%dd%==0801 goto L02
if %dm%%dd%==0901 goto L02
if %dm%%dd%==1001 goto L05
if %dm%%dd%==1101 goto L03
if %dm%%dd%==1201 goto L06
if %dd%==02 goto L10
if %dd%==03 goto L10
if %dd%==04 goto L10
if %dd%==05 goto L10
if %dd%==06 goto L10
if %dd%==07 goto L10
if %dd%==08 goto L10
if %dd%==09 goto L10
if %dd%==10 goto L11
set /A dd=dd-1
set dt=%dy%-%dm%-%dd%
goto END
:L10
set /A dd=%dd:~1,1%-1
set dt=%dy%-%dm%-0%dd%
goto END
:L11
set dt=%dy%-%dm%-09
goto END
:L02
set /A dm=%dm:~1,1%-1
set dt=%dy%-0%dm%-31
goto END
:L04
set /A dm=dm-1
set dt=%dy%-0%dm%-30
goto END
:L05
set dt=%dy%-09-30
goto END
:L03
set dt=%dy%-10-31
goto END
:L06
set dt=%dy%-11-30
goto END
:L01
set /A dy=dy-1
set dt=%dy%-12-31
goto END
:L07
set /A "dd=dy%%4"
if not %dd%==0 goto L08
set /A "dd=dy%%100"
if not %dd%==0 goto L09
set /A "dd=dy%%400"
if %dd%==0 goto L09
:L08
set dt=%dy%-02-28
goto END
:L09
set dt=%dy%-02-29
goto END
:END
rem 执行程序部分
echo %dt:~0,4%%dt:~5,2%%dt:~8,2%
pause
------------------------------------------
呵呵,又找到个:
@echo off&setlocal enabledelayedexpansion
set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
set /a od=!dd!-1
if !od!==0 call :dd0
if !mm!==0 call :mm0
rem set yyyymmdd=!yyyy!年!mm!月!od!日
echo !yyyy!!mm!!od!
pause
:dd0
set /a mm=!mm!-1
for %%a in (1 3 5 7 8 10 12)do set %%add=31
set /a pddd=!yyyy!*10/4
set pd2d=!pddd:~-1,1!
set 2dd=28
if !pd2d!==0 set 2dd=29
for %%b in (4 6 9 11)do set %%bdd=30
set od=!%mm%dd!
goto :eof
要解决的就是每月一号的前一天是多少的问题
本年是否为闰年,本月奇偶
学过C语言的话,书上有算法
----网上找了个,如下-------
@echo off
set dt=%date:~0,10%
rem date format is "YYYY-MM-DD"
rem set /P dt="Input Date: "
set dy=%dt:~0,4%
set dm=%dt:~5,2%
set dd=%dt:~8,2%
if %dm%%dd%==0101 goto L01
if %dm%%dd%==0201 goto L02
if %dm%%dd%==0301 goto L07
if %dm%%dd%==0401 goto L02
if %dm%%dd%==0501 goto L04
if %dm%%dd%==0601 goto L02
if %dm%%dd%==0701 goto L04
if %dm%%dd%==0801 goto L02
if %dm%%dd%==0901 goto L02
if %dm%%dd%==1001 goto L05
if %dm%%dd%==1101 goto L03
if %dm%%dd%==1201 goto L06
if %dd%==02 goto L10
if %dd%==03 goto L10
if %dd%==04 goto L10
if %dd%==05 goto L10
if %dd%==06 goto L10
if %dd%==07 goto L10
if %dd%==08 goto L10
if %dd%==09 goto L10
if %dd%==10 goto L11
set /A dd=dd-1
set dt=%dy%-%dm%-%dd%
goto END
:L10
set /A dd=%dd:~1,1%-1
set dt=%dy%-%dm%-0%dd%
goto END
:L11
set dt=%dy%-%dm%-09
goto END
:L02
set /A dm=%dm:~1,1%-1
set dt=%dy%-0%dm%-31
goto END
:L04
set /A dm=dm-1
set dt=%dy%-0%dm%-30
goto END
:L05
set dt=%dy%-09-30
goto END
:L03
set dt=%dy%-10-31
goto END
:L06
set dt=%dy%-11-30
goto END
:L01
set /A dy=dy-1
set dt=%dy%-12-31
goto END
:L07
set /A "dd=dy%%4"
if not %dd%==0 goto L08
set /A "dd=dy%%100"
if not %dd%==0 goto L09
set /A "dd=dy%%400"
if %dd%==0 goto L09
:L08
set dt=%dy%-02-28
goto END
:L09
set dt=%dy%-02-29
goto END
:END
rem 执行程序部分
echo %dt:~0,4%%dt:~5,2%%dt:~8,2%
pause
------------------------------------------
呵呵,又找到个:
@echo off&setlocal enabledelayedexpansion
set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
set /a od=!dd!-1
if !od!==0 call :dd0
if !mm!==0 call :mm0
rem set yyyymmdd=!yyyy!年!mm!月!od!日
echo !yyyy!!mm!!od!
pause
:dd0
set /a mm=!mm!-1
for %%a in (1 3 5 7 8 10 12)do set %%add=31
set /a pddd=!yyyy!*10/4
set pd2d=!pddd:~-1,1!
set 2dd=28
if !pd2d!==0 set 2dd=29
for %%b in (4 6 9 11)do set %%bdd=30
set od=!%mm%dd!
goto :eof
展开全部
参考:
DOS日期格式设置
%date% 和 %time%
2008-10-21 21:34:11.56
C:\>echo %date%
2008-10-21 星期二
C:\>echo %date:~0,4%
2008
盘符:\>输出 %date%是一个参数 但是他后面带的这些就是取值范围,说说后面的数值第一个0代表从头开始 后面的4代表共取4个字符
C:\>echo %date:~-3%
星期三
这里面的负数代表倒数,也就取最后3个字符
C:\>echo %date:~-3,-1%
星期
这里的-1是不输出最后1个字符-2当然是2个类推
time也类似
echo %time%
21:34:11.56
DOS日期格式设置
%date% 和 %time%
2008-10-21 21:34:11.56
C:\>echo %date%
2008-10-21 星期二
C:\>echo %date:~0,4%
2008
盘符:\>输出 %date%是一个参数 但是他后面带的这些就是取值范围,说说后面的数值第一个0代表从头开始 后面的4代表共取4个字符
C:\>echo %date:~-3%
星期三
这里面的负数代表倒数,也就取最后3个字符
C:\>echo %date:~-3,-1%
星期
这里的-1是不输出最后1个字符-2当然是2个类推
time也类似
echo %time%
21:34:11.56
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
学习啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询