标题: [日期时间] 批处理瞬间计算星期数 [打印本页]
作者: Zombie 时间: 2010-2-23 18:07 标题: 批处理瞬间计算星期数
本帖最后由 Zombie 于 2021-1-4 20:29 编辑
- @echo off
- color 2a
- title 星期分析者 Ver1.0
- goto main
- :main
- cls
- echo 请输入日期(格式:XXXXYYZZ):
- set 日期=
- set 年=
- set 月=
- set 日=
- set /p 日期=
- echo %日期% | findstr "[0-9]" || goto error
- echo %日期% | findstr /I "[a-z]" && goto error
- goto load
- :load
- cls
- set /a 年=%日期:~0,4%
- set /a 月=%日期:~4,2%
- set /a qwe=%年%*10000
- set /a asd=%月%*100
- set /a 日=%日期%-%qwe%-%asd%
- cls
- set /a t=%年%/4
- set /a tt=%年%/100
- set /a ttt=%年%/400
- set /a cc=%年%%%4
- set /a ccc=%年%%%400
- if %cc% equ 0 (
- if %ccc% equ 0 (
- set /a ery=29
- )
- ) else (
- set /a ery=28
- )
- if %cc% equ 1 set /a ery=29
- if %cc% equ 2 set /a ery=29
- if %cc% equ 3 set /a ery=29
- if %月% equ 1 set /a t4=%日%
- if %月% equ 2 set /a t4=%日%+31
- if %月% equ 3 set /a t4=%日%+31+%ery%
- if %月% equ 4 set /a t4=%日%+31+%ery%+31
- if %月% equ 5 set /a t4=%日%+31+%ery%+31+30
- if %月% equ 6 set /a t4=%日%+31+%ery%+31+30+31
- if %月% equ 7 set /a t4=%日%+31+%ery%+31+30+31+30
- if %月% equ 8 set /a t4=%日%+31+%ery%+31+30+31+30+31
- if %月% equ 9 set /a t4=%日%+31+%ery%+31+30+31+30+31+31
- if %月% equ 10 set /a t4=%日%+31+%ery%+31+30+31+30+31+31+30
- if %月% equ 11 set /a t4=%日%+31+%ery%+31+30+31+30+31+31+30+31
- if %月% equ 12 set /a t4=%日%+31+%ery%+31+30+31+30+31+31+30+31+30
- set /a tttt=%t4%
- set /a x=%t%+%tt%+%ttt%+%t4%+%年%+1
- set /a xx=%x%%%7
- if %xx% equ 0 echo %年% 年 %月% 月 %日% 日 是星期日
- if %xx% equ 1 echo %年% 年 %月% 月 %日% 日 是星期一
- if %xx% equ 2 echo %年% 年 %月% 月 %日% 日 是星期二
- if %xx% equ 3 echo %年% 年 %月% 月 %日% 日 是星期三
- if %xx% equ 4 echo %年% 年 %月% 月 %日% 日 是星期四
- if %xx% equ 5 echo %年% 年 %月% 月 %日% 日 是星期五
- if %xx% equ 6 echo %年% 年 %月% 月 %日% 日 是星期六
- pause>nul
- goto main
- :error
- cls
- echo 请确认输入!
- pause>nul
- goto main
复制代码
作者: Zombie 时间: 2010-2-23 18:08
请版主移至原创区..
作者: Zombie 时间: 2010-2-23 18:09
公式
(年份/4取商+年份/100取商+年份/400取商+年份+加在是那年的第几天)/7
余几就是星期几
0就是星期天
作者: Seter 时间: 2010-2-23 18:31
用基姆拉尔森计算公式...
作者: Zombie 时间: 2010-2-23 19:11
原帖由 Seter 于 2010-2-23 18:31 发表
用基姆拉尔森计算公式...
原来这是基姆拉尔森计算公式
PS:鸡母拉尔神.....
作者: Batcher 时间: 2010-2-23 19:14
批处理函数库里面有一个DateToDOW函数
http://www.bathome.net/thread-3056-1-1.html
VBS版的看起来比较简短
http://www.bathome.net/viewthread.php?tid=2187#pid12597
作者: Zombie 时间: 2010-2-23 19:32
原来已经有人做了......
作者: 523066680 时间: 2010-2-24 10:21 标题: 回复 7楼 的帖子
现在这年头,谁敢说他写的算法在历史上没人做过……
作者: inittab 时间: 2010-3-1 23:46
利用Ritchie Lawrence日期函数计算- @echo off&setlocal enabledelayedexpansion
- for %%a in (一 二 三 四 五 六 日) do set/an+=1&set #!n!=%%a
- set/p date=请输入正确日期(格式yyyymmdd):
- set yy=!date:~0,4!&set mm=!date:~4,2!&set dd=!date:~6,2!
- :::输入合法性判断略
- set /a dd=100%dd%%%100,mm=100%mm%%%100
- set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,dow=153*m+2
- set /a dow=dow/5+dd+y*365+y/4-y/100+y/400-2472630,dow%%=7,dow+=1
- call echo !yy!年!mm!月!dd!日是星期%%#%dow%%%&pause
复制代码
[ 本帖最后由 inittab 于 2010-3-1 23:48 编辑 ]
作者: 阿键 时间: 2013-4-8 11:13
2013年4月8日是星期二!明显出错了。
作者: 阿键 时间: 2013-4-8 11:27
我要的是第几周,怎么做?
每天自动运行一次,然后根据今天的日期计算出今天在今年中的第几周。
作者: jack_gao1 时间: 2013-8-27 17:18
回复 1# Zombie
当输入20130930时,退出,看不清楚显示的信息
作者: Batcher 时间: 2021-1-4 21:53
回复 12# jack_gao1
请参考Q-01观察一下哪行代码在报错:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
作者: xtwwz 时间: 2021-2-25 16:16
学习了,谢谢楼主。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |