找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 38306|回复: 13

[日期时间] 批处理瞬间计算星期数

[复制链接]
发表于 2010-2-23 18:07:40 | 显示全部楼层 |阅读模式
本帖最后由 Zombie 于 2021-1-4 20:29 编辑
  1. @echo off
  2. color 2a
  3. title 星期分析者 Ver1.0
  4. goto main
  5. :main
  6. cls
  7. echo 请输入日期(格式:XXXXYYZZ):
  8. set 日期=
  9. set 年=
  10. set 月=
  11. set 日=
  12. set /p 日期=
  13. echo %日期% | findstr "[0-9]" || goto error
  14. echo %日期% | findstr /I "[a-z]" && goto error
  15. goto load
  16. :load
  17. cls
  18. set /a 年=%日期:~0,4%
  19. set /a 月=%日期:~4,2%
  20. set /a qwe=%年%*10000
  21. set /a asd=%月%*100
  22. set /a 日=%日期%-%qwe%-%asd%
  23. cls
  24. set /a t=%年%/4
  25. set /a tt=%年%/100
  26. set /a ttt=%年%/400
  27. set /a cc=%年%%%4
  28. set /a ccc=%年%%%400
  29. if %cc% equ 0 (
  30. if %ccc% equ 0 (
  31. set /a ery=29
  32. )
  33. ) else (
  34. set /a ery=28
  35. )
  36. if %cc% equ 1 set /a ery=29
  37. if %cc% equ 2 set /a ery=29
  38. if %cc% equ 3 set /a ery=29
  39. if %月% equ 1 set /a t4=%日%
  40. if %月% equ 2 set /a t4=%日%+31
  41. if %月% equ 3 set /a t4=%日%+31+%ery%
  42. if %月% equ 4 set /a t4=%日%+31+%ery%+31
  43. if %月% equ 5 set /a t4=%日%+31+%ery%+31+30
  44. if %月% equ 6 set /a t4=%日%+31+%ery%+31+30+31
  45. if %月% equ 7 set /a t4=%日%+31+%ery%+31+30+31+30
  46. if %月% equ 8 set /a t4=%日%+31+%ery%+31+30+31+30+31
  47. if %月% equ 9 set /a t4=%日%+31+%ery%+31+30+31+30+31+31
  48. if %月% equ 10 set /a t4=%日%+31+%ery%+31+30+31+30+31+31+30
  49. if %月% equ 11 set /a t4=%日%+31+%ery%+31+30+31+30+31+31+30+31
  50. if %月% equ 12 set /a t4=%日%+31+%ery%+31+30+31+30+31+31+30+31+30
  51. set /a tttt=%t4%
  52. set /a x=%t%+%tt%+%ttt%+%t4%+%年%+1
  53. set /a xx=%x%%%7
  54. if %xx% equ 0 echo %年% 年 %月% 月 %日% 日 是星期日
  55. if %xx% equ 1 echo %年% 年 %月% 月 %日% 日 是星期一
  56. if %xx% equ 2 echo %年% 年 %月% 月 %日% 日 是星期二
  57. if %xx% equ 3 echo %年% 年 %月% 月 %日% 日 是星期三
  58. if %xx% equ 4 echo %年% 年 %月% 月 %日% 日 是星期四
  59. if %xx% equ 5 echo %年% 年 %月% 月 %日% 日 是星期五
  60. if %xx% equ 6 echo %年% 年 %月% 月 %日% 日 是星期六
  61. pause>nul
  62. goto main
  63. :error
  64. cls
  65. echo 请确认输入!
  66. pause>nul
  67. goto main
复制代码
 楼主| 发表于 2010-2-23 18:08:09 | 显示全部楼层
请版主移至原创区..
 楼主| 发表于 2010-2-23 18:09:36 | 显示全部楼层
公式
(年份/4取商+年份/100取商+年份/400取商+年份+加在是那年的第几天)/7
余几就是星期几
0就是星期天
发表于 2010-2-23 18:31:03 | 显示全部楼层
用基姆拉尔森计算公式...
 楼主| 发表于 2010-2-23 19:11:22 | 显示全部楼层
原帖由 Seter 于 2010-2-23 18:31 发表
用基姆拉尔森计算公式...



原来这是基姆拉尔森计算公式

PS:鸡母拉尔神.....
发表于 2010-2-23 19:14:37 | 显示全部楼层
批处理函数库里面有一个DateToDOW函数
http://www.bathome.net/thread-3056-1-1.html

VBS版的看起来比较简短
http://www.bathome.net/viewthread.php?tid=2187#pid12597
 楼主| 发表于 2010-2-23 19:32:39 | 显示全部楼层
原来已经有人做了......
发表于 2010-2-24 10:21:48 | 显示全部楼层

回复 7楼 的帖子

现在这年头,谁敢说他写的算法在历史上没人做过……
发表于 2010-3-1 23:46:26 | 显示全部楼层
利用Ritchie Lawrence日期函数计算
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%a in (一 二 三 四 五 六 日) do set/an+=1&set #!n!=%%a
  3. set/p date=请输入正确日期(格式yyyymmdd):
  4. set yy=!date:~0,4!&set mm=!date:~4,2!&set dd=!date:~6,2!
  5. :::输入合法性判断略
  6. set /a dd=100%dd%%%100,mm=100%mm%%%100
  7. set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,dow=153*m+2
  8. set /a dow=dow/5+dd+y*365+y/4-y/100+y/400-2472630,dow%%=7,dow+=1
  9. call echo !yy!年!mm!月!dd!日是星期%%#%dow%%%&pause
复制代码

[ 本帖最后由 inittab 于 2010-3-1 23:48 编辑 ]
发表于 2013-4-8 11:13:36 | 显示全部楼层
2013年4月8日是星期二!明显出错了。
发表于 2013-4-8 11:27:04 | 显示全部楼层
我要的是第几周,怎么做?
每天自动运行一次,然后根据今天的日期计算出今天在今年中的第几周。
发表于 2013-8-27 17:18:22 | 显示全部楼层
回复 1# Zombie


    当输入20130930时,退出,看不清楚显示的信息
发表于 2021-1-4 21:53:15 | 显示全部楼层
回复 12# jack_gao1


请参考Q-01观察一下哪行代码在报错:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
发表于 2021-2-25 16:16:18 | 显示全部楼层
学习了,谢谢楼主。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 00:07 , Processed in 0.021289 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表