|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『楼 主』:
查N天前日期
帮测试一下 查N天前日期
添一个1752年9月3日后的星期公式
拿论坛前辈们代码用一下 使代码完善一点
@echo off&color 0b&setlocal enabledelayedexpansion&mode con cols=45 lines=25
:st
set jt=今天是
:ymd
cls
set p1=%date:~0,4%
set p2=%date:~5,2%
set p3=%date:~8,2%
for /l %%a in (1,1,3) do (
for /f "delims=0 tokens=*" %%i in ("!p%%a!") do set p%%a=%%i
)
: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
set pt=%%i
)
if not "%tt%" == "" (
if %p3% leq %tt% goto nxt
)
:ppp
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 pt=%%i
set/a p3=p3-tt
set y=%p1%
set m=%p2%
if %m% leq 2 (set/a y-=1,m+=12)
set /a w=(p3+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%%7
set /a w1=(1+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%%7
set xq=日一二三四五六
set /a w2=w1+pt, day=1
if %p1% gtr 1949 set/a mn=p1-1949
if %p1% gtr 1874 if %p1% lss 1909 set/a mn=p1-1874
if %p1% gtr 1908 if %p1% lss 1912 set/a mn=p1-1908
if %p1% gtr 1911 if %p1% lss 1950 set/a mn=p1-1911
if %p1% gtr 1949 set mn=建国%mn%周年
if %p1% gtr 1874 if %p1% lss 1909 set mn=光绪 %mn% 年
if %p1% gtr 1908 if %p1% lss 1912 set mn=宣统 %mn% 年
if %p1% gtr 1911 if %p1% lss 1950 set mn=民国 %mn% 年
for /f "tokens=1,2" %%i in ('more/e +78^< %~f0') do if "%%i"=="%p2%%p3%" set nu=%%j
set sx=猴鸡狗猪鼠牛虎兔龙蛇马羊
set tg=庚辛壬癸甲乙丙丁戊己
set dz=申酉戌亥子丑寅卯辰巳午未
set /a sxnum=p1%%12
set /a tgnum=%p1:~-1%
echo. 农历 !tg:~%tgnum%,1!!dz:~%sxnum%,1!年 [!sx:~%sxnum%,1!]年
echo. %p1%年%p2%月 %jt%:%p1%年%p2%月%p3%日 星期!xq:~%w%,1!
echo. %mn%
echo.
echo. %nu%
echo.
echo. 日 一 二 三 四 五 六
echo. ━━━━━━━━━━━━━━━━━━━
set /p= <nul
for /l %%i in (0,1,37) do (
set "temp= "
if %%i GEQ %w1% if %%i LSS %w2% (
set temp= !day!
set temp=!temp:~-2!
if !p3! EQU !day! set temp=★
set /a day+=1
)
set /p= !temp!<nul
set /a "wm=(%%i+1)%%7"
if !wm! equ 0 echo.&echo.&set /p= <nul
)
echo.
echo ━━━━━━━━━━━━━━━━━━━
for %%a in (p1 p2 p3 nu mn) do set %%a=
:stt
SET/p TT=你想知道多少天前的日期?
if "%tt%" =="" goto :eof
echo %tt%|findstr "^[0-9]*$">nul&&goto ys||echo 只能输入数字0-9&pause&goto stt
:ys
set jt=你查询的是
goto ymd
11 新年元旦
22 世界湿地日
27 国际声援南非日
210 国际气象节
212 国际足球比赛日
214 西方情人节
31 国际海豹日
33 全国爱耳日
38 国际妇女节
312 植树节 孙中山逝世纪念日
314 国际警察日
315 国际消费者权益日
317 中国国医节 国际航海日
321 世界森林日 消除种族歧视国际日
321 世界儿歌日
322 世界水日
323 世界气象日
324 世界防治结核病日
325 全国中小学生安全教育日
33 巴勒斯坦国土日
41 愚人节 全国爱国卫生运动月(四月) 税收宣传月(四月)
47 世界卫生日
422 世界地球日
423 世界图书和版权日
424 亚非新闻工作者日
51 国际劳动节
54 中国五四青年节
55 碘缺乏病防治日
58 世界红十字日
512 国际护士节
515 国际家庭日
517 世界电信日
518 国际博物馆日
520 全国学生营养日
523 国际牛奶日
531 世界无烟日
61 国际儿童节
65 世界环境日
66 全国爱眼日
617 防治荒漠化和干旱日
623 国际奥林匹克日
625 全国土地日
626 国际反毒品日
71 中国共产党建党日 世界建筑日
72 国际体育记者日
77 中国人民抗日战争纪念日
711 世界人口日
730 非洲妇女日
81 中国建军节
88 中国男子节(爸爸节)
815 日本正式宣布无条件投降日
98 国际扫盲日 国际新闻工作者日
910 教师节
914 世界清洁地球日
916 国际臭氧层保护日
918 九·一八事变纪念日
920 国际爱牙日
927 世界旅游日
101 国庆节 世界音乐日 国际老人节
101 国际音乐日
102 国际和平与民主自由斗争日
104 世界动物日
108 全国高血压日
108 世界视觉日
109 世界邮政日 万国邮联日
1010 辛亥革命纪念日 世界精神卫生日
1013 世界保健日 国际教师节
1014 世界标准日
1015 国际盲人节(白手杖节)
1016 世界粮食日
1017 世界消除贫困日
1022 世界传统医药日
1024 联合国日 世界发展信息日
1031 世界勤俭日
117 十月社会主义革命纪念日
118 中国记者日
119 全国消防安全宣传教育日
1110 世界青年节
1111 国际科学与和平周 (本日所属的一周)
1112 孙中山诞辰纪念日
1114 世界糖尿病日
1117 国际大学生节 世界学生节
1121 世界问候日 世界电视日
1129 国际声援巴勒斯坦人民国际日
121 世界艾滋病日
123 世界残疾人日
125 国际经济和社会发展志愿人员日
128 国际儿童电视日
129 世界足球日
1210 世界人权日
1212 西安事变纪念日
1213 南京大屠杀(1937年)纪念日! 紧记血泪史!
1221 国际篮球日
1224 平安夜
1225 圣诞节
1229 国际生物多样性日 [ Last edited by terse on 2008-2-20 at 07:06 PM ]
|
简单!简单!再简单! |
|
2008-2-4 13:47 |
|
|
moniuming
银牌会员
永远的菜鸟
积分 1335
发帖 574
注册 2007-11-27 来自 广西
状态 离线
|
|
2008-2-10 13:37 |
|
|
xhf3218
新手上路
积分 10
发帖 5
注册 2008-2-13
状态 离线
|
『第
3 楼』:
好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好
|
|
2008-2-13 18:22 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
4 楼』:
查N天后日期 准确度还未知
添上一个1752年9月3日后的星期公式
拿论坛前辈们代码用一下 受益非浅
@echo off&color 0b&setlocal enabledelayedexpansion&mode con cols=46 lines=25
set jt=今天是
:ymd
cls
set p1=%date:~0,4%
set p2=%date:~5,2%
set p3=%date:~8,2%
for /l %%a in (1,1,3) do (
for /f "delims=0 tokens=*" %%i in ("!p%%a!") do set p%%a=%%i
)
:nxt
if %p2% equ 13 set/a p1+=1&&set p2=1
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=%tt%+%p3%
set pt=%%i
)
if %p3% leq %pt% goto ppp
set/a p3=%p3%-%pt%
set tt=0&&set/a p2+=1&&goto nxt
:ppp
set y=%p1%
set m=%p2%
if %m% leq 2 (set/a y-=1,m+=12)
set /a w=(p3+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%%7
set /a w1=(1+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%%7
set xq=日一二三四五六
set /a w2=w1+pt, day=1
if %p1% gtr 1949 set/a mn=p1-1949
if %p1% gtr 1874 if %p1% lss 1909 set/a mn=p1-1874
if %p1% gtr 1908 if %p1% lss 1912 set/a mn=p1-1908
if %p1% gtr 1911 if %p1% lss 1950 set/a mn=p1-1911
if %p1% gtr 1949 set mn=建国%mn%周年
if %p1% gtr 1874 if %p1% lss 1909 set mn=光绪 %mn% 年
if %p1% gtr 1908 if %p1% lss 1912 set mn=宣统 %mn% 年
if %p1% gtr 1911 if %p1% lss 1950 set mn=民国 %mn% 年
for /f "tokens=1,2" %%i in ('more/e +72^< %~f0') do if "%%i"=="%p2%%p3%" set nu=%%j
set sx=猴鸡狗猪鼠牛虎兔龙蛇马羊
set tg=庚辛壬癸甲乙丙丁戊己
set dz=申酉戌亥子丑寅卯辰巳午未
set /a sxnum=p1%%12
set /a tgnum=%p1:~-1%
echo. 农历 !tg:~%tgnum%,1!!dz:~%sxnum%,1!年 [!sx:~%sxnum%,1!]年
echo. %p1%年%p2%月 %jt%:%p1%年%p2%月%p3%日 星期!xq:~%w%,1!
echo. %mn%
echo.
echo. %nu%
echo.
echo. 日 一 二 三 四 五 六
echo. ━━━━━━━━━━━━━━━━━━━
set /p= <nul
for /l %%i in (0,1,37) do (
set "temp= "
if %%i GEQ %w1% if %%i LSS %w2% (
set temp= !day!
set temp=!temp:~-2!
if !p3! EQU !day! set temp=★
set /a day+=1
)
set /p= !temp!<nul
set /a "wm=(%%i+1)%%7"
if !wm! equ 0 echo.&echo.&set /p= <nul
)
echo.
echo ━━━━━━━━━━━━━━━━━━━
for %%a in (p1 p2 p3 nu mn) do set %%a=
:st
SET/p TT=你想知道多少天后的日期?
if "%tt%" =="" goto :eof
echo %tt%|findstr "^[0-9]*$">nul&&goto ys||echo 只输入数字0-9&pause&goto st
:ys
set jt=你查询的是
goto ymd
11 新年元旦
22 世界湿地日
27 国际声援南非日
210 国际气象节
212 国际足球比赛日
214 西方情人节
31 国际海豹日
33 全国爱耳日
38 国际妇女节
312 植树节 孙中山逝世纪念日
314 国际警察日
315 国际消费者权益日
317 中国国医节 国际航海日
321 世界森林日 消除种族歧视国际日
321 世界儿歌日
322 世界水日
323 世界气象日
324 世界防治结核病日
325 全国中小学生安全教育日
33 巴勒斯坦国土日
41 愚人节 全国爱国卫生运动月(四月) 税收宣传月(四月)
47 世界卫生日
422 世界地球日
423 世界图书和版权日
424 亚非新闻工作者日
51 国际劳动节
54 中国五四青年节
55 碘缺乏病防治日
58 世界红十字日
512 国际护士节
515 国际家庭日
517 世界电信日
518 国际博物馆日
520 全国学生营养日
523 国际牛奶日
531 世界无烟日
61 国际儿童节
65 世界环境日
66 全国爱眼日
617 防治荒漠化和干旱日
623 国际奥林匹克日
625 全国土地日
626 国际反毒品日
71 中国共产党建党日 世界建筑日
72 国际体育记者日
77 中国人民抗日战争纪念日
711 世界人口日
730 非洲妇女日
81 中国建军节
88 中国男子节(爸爸节)
815 日本正式宣布无条件投降日
98 国际扫盲日 国际新闻工作者日
910 教师节
914 世界清洁地球日
916 国际臭氧层保护日
918 九·一八事变纪念日
920 国际爱牙日
927 世界旅游日
101 国庆节 世界音乐日 国际老人节
101 国际音乐日
102 国际和平与民主自由斗争日
104 世界动物日
108 全国高血压日
108 世界视觉日
109 世界邮政日 万国邮联日
1010 辛亥革命纪念日 世界精神卫生日
1013 世界保健日 国际教师节
1014 世界标准日
1015 国际盲人节(白手杖节)
1016 世界粮食日
1017 世界消除贫困日
1022 世界传统医药日
1024 联合国日 世界发展信息日
1031 世界勤俭日
117 十月社会主义革命纪念日
118 中国记者日
119 全国消防安全宣传教育日
1110 世界青年节
1111 国际科学与和平周 (本日所属的一周)
1112 孙中山诞辰纪念日
1114 世界糖尿病日
1117 国际大学生节 世界学生节
1121 世界问候日 世界电视日
1129 国际声援巴勒斯坦人民国际日
121 世界艾滋病日
123 世界残疾人日
125 国际经济和社会发展志愿人员日
128 国际儿童电视日
129 世界足球日
1210 世界人权日
1212 西安事变纪念日
1213 南京大屠杀(1937年)纪念日! 紧记血泪史!
1221 国际篮球日
1224 平安夜
1225 圣诞节
1229 国际生物多样性日 [ Last edited by terse on 2008-2-20 at 07:00 PM ]
|
简单!简单!再简单! |
|
2008-2-13 19:46 |
|
|
xmi
初级用户
积分 125
发帖 56
注册 2008-2-20
状态 离线
|
『第
5 楼』:
不行, 當我輸入2時 (無論什麼數目), 它都只出了以下的結果
<是20/0年01月08日 星期三>
?????
|
|
2008-2-20 15:36 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
6 楼』:
Quote: | Originally posted by xmi at 2008-2-20 15:36:
不行, 當我輸入2時 (無論什麼數目), 它都只出了以下的結果
<是20/0年01月08日 星期三>
????? |
|
会不会是机器时间格式问题?
我这里还没遇到这样的问题
原来论坛前辈们 都有很好的代码 我拿来用一下
更新一下
|
简单!简单!再简单! |
|
2008-2-20 18:55 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
7 楼』:
发一个 输入年月日 的
@echo off&color b&setlocal enabledelayedexpansion&mode con cols=45 lines=25
set jt=今天是
set p1=%date:~0,4%
set p2=%date:~5,2%
set p3=%date:~8,2%
:ymd
setlocal enabledelayedexpansion
for /l %%a in (1,1,3) do (
for /f "delims=0 tokens=*" %%i in ("!p%%a!") do set p%%a=%%i
)
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 pt=%%i
set y=%p1%
set m=%p2%
if %m% leq 2 (set/a y-=1,m+=12)
set /a w=(p3+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%%7
set /a w1=(1+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%%7
set xq=日一二三四五六
set /a w2=w1+pt, day=1
if %p1% gtr 1949 set/a mn=p1-1949
if %p1% gtr 1949 set/a mn=p1-1949
if %p1% gtr 1874 if %p1% lss 1909 set/a mn=p1-1874
if %p1% gtr 1908 if %p1% lss 1912 set/a mn=p1-1908
if %p1% gtr 1911 if %p1% lss 1950 set/a mn=p1-1911
if %p1% gtr 1949 set mn=建国%mn%周年
if %p1% gtr 1874 if %p1% lss 1909 set mn=光绪 %mn% 年
if %p1% gtr 1908 if %p1% lss 1912 set mn=宣统 %mn% 年
if %p1% gtr 1911 if %p1% lss 1950 set mn=民国 %mn% 年
for /f "tokens=1,2" %%i in ('more/e +82^< %~f0') do if "%%i"=="%p2%%p3%" set nu=%%j
set sx=猴鸡狗猪鼠牛虎兔龙蛇马羊
set tg=庚辛壬癸甲乙丙丁戊己
set dz=申酉戌亥子丑寅卯辰巳午未
set /a sxnum=p1%%12
set /a tgnum=%p1:~-1%
echo. 农历!tg:~%tgnum%,1!!dz:~%sxnum%,1!年 [!sx:~%sxnum%,1!] 年
echo. %p1%年%p2%月 %jt%:%p1%年%p2%月%p3%日 星期!xq:~%w%,1!
echo.
echo. %mn%
echo.
echo. %nu%
echo.
echo. 日 一 二 三 四 五 六
echo. ━━━━━━━━━━━━━━━━━━━
set /p= <nul
for /l %%i in (0,1,37) do (
set "temp= "
if %%i GEQ %w1% if %%i LSS %w2% (
set temp= !day!
set temp=!temp:~-2!
if !p3! EQU !day! set temp=★
set /a day+=1
)
set /p= !temp!<nul
set /a "wm=(%%i+1)%%7"
if !wm! equ 0 echo.&echo.&set /p= <nul
)
echo.
echo ━━━━━━━━━━━━━━━━━━━
for %%a in (p1 p2 p3 nu mn) do set %%a=
echo. 输入日期可查询当日星期并显示当月月历
echo.
:p1
set/p p1=输入4位年份 [回车]退出:
if "%p1%" =="" goto :eof
echo.%p1%|findstr "\<[1-9][0-9][0-9][0-9]\>" >nul&&goto p2||echo 输入4位年份(只能是0-9,首位不能为0)&pause&goto p1
:p2
set/p p2=输入月份 [回车]退出:
if "%p2%" == "" echo 不能为空&goto p2
if %p2% gtr 12 echo.错误输入&goto p2
if %p2% lss 1 echo.错误输入&goto p2
echo %p2%|findstr "^[0-9]*$">nul&&goto p3||echo 只能是0-9&goto p2
:p3
set/p p3=输入日期 [回车]退出:
if "%p3%" == "" echo 不能为空 &goto p3
if %p3% gtr 31 echo.错误输入&goto p3
if %p3% lss 1 echo.错误输入&goto p3
echo %p3%|findstr "^[0-9]*$">nul&&goto p4||echo 只能是0-9&goto p3
:p4
set jt=你查询的是
cls
goto ymd
11 新年元旦
22 世界湿地日
27 国际声援南非日
210 国际气象节
212 国际足球比赛日
214 西方情人节
31 国际海豹日
33 全国爱耳日
38 国际妇女节
312 植树节 孙中山逝世纪念日
314 国际警察日
315 国际消费者权益日
317 中国国医节 国际航海日
321 世界森林日 消除种族歧视国际日
321 世界儿歌日
322 世界水日
323 世界气象日
324 世界防治结核病日
325 全国中小学生安全教育日
33 巴勒斯坦国土日
41 愚人节 全国爱国卫生运动月(四月) 税收宣传月(四月)
47 世界卫生日
422 世界地球日
423 世界图书和版权日
424 亚非新闻工作者日
51 国际劳动节
54 中国五四青年节
55 碘缺乏病防治日
58 世界红十字日
512 国际护士节
515 国际家庭日
517 世界电信日
518 国际博物馆日
520 全国学生营养日
523 国际牛奶日
531 世界无烟日
61 国际儿童节
65 世界环境日
66 全国爱眼日
617 防治荒漠化和干旱日
623 国际奥林匹克日
625 全国土地日
626 国际反毒品日
71 中国共产党建党日 世界建筑日
72 国际体育记者日
77 中国人民抗日战争纪念日
711 世界人口日
730 非洲妇女日
81 中国建军节
88 中国男子节(爸爸节)
815 日本正式宣布无条件投降日
98 国际扫盲日 国际新闻工作者日
910 教师节
914 世界清洁地球日
916 国际臭氧层保护日
918 九·一八事变纪念日
920 国际爱牙日
927 世界旅游日
101 国庆节 世界音乐日 国际老人节
101 国际音乐日
102 国际和平与民主自由斗争日
104 世界动物日
108 全国高血压日
108 世界视觉日
109 世界邮政日 万国邮联日
1010 辛亥革命纪念日 世界精神卫生日
1013 世界保健日 国际教师节
1014 世界标准日
1015 国际盲人节(白手杖节)
1016 世界粮食日
1017 世界消除贫困日
1022 世界传统医药日
1024 联合国日 世界发展信息日
1031 世界勤俭日
117 十月社会主义革命纪念日
118 中国记者日
119 全国消防安全宣传教育日
1110 世界青年节
1111 国际科学与和平周 (本日所属的一周)
1112 孙中山诞辰纪念日
1114 世界糖尿病日
1117 国际大学生节 世界学生节
1121 世界问候日 世界电视日
1129 国际声援巴勒斯坦人民国际日
121 世界艾滋病日
123 世界残疾人日
125 国际经济和社会发展志愿人员日
128 国际儿童电视日
129 世界足球日
1210 世界人权日
1212 西安事变纪念日
1213 南京大屠杀(1937年)纪念日! 紧记血泪史!
1221 国际篮球日
1224 平安夜
1225 圣诞节
1229 国际生物多样性日
|
简单!简单!再简单! |
|
2008-2-20 19:16 |
|
|
xmi
初级用户
积分 125
发帖 56
注册 2008-2-20
状态 离线
|
|
2008-2-22 00:58 |
|
|