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

[日期时间] 批处理计算星期为什么只有2012年2月20日显示不正常?

[复制链接]
发表于 2012-2-20 18:16:37 | 显示全部楼层 |阅读模式
我是根据W的值来计算星期几的,只有到了2012年2月20日显示不正常,明明是星期一,算出的值缺是2,前后几天都是正常,请教高人指点啊!
  1. @echo off

  2. set /a y = %date:~0,4%
  3. if %date:~5,1% EQU 0 set /a m = %date:~6,1%
  4. if %date:~5,1% NEQ 0 set /a m = %date:~5,2%
  5. if %date:~8,1% EQU 0 set /a d = %date:~9,1%
  6. if %date:~9,1% NEQ 0 set /a d = %date:~8,2%
  7. if %m% EQU 1 set /a m = 13
  8. if %m% EQU 2 set /a m = 14

  9. set /a w = (d + 2*m+3*(m+1)/5+y+y/4-y/100+y/400) - ((d + 2*m+3*(m+1)/5+y+y/4-y/100+y/400)/7)*7 + 1

  10. set /a yy = (y - 4*(y/4))
  11. if %m% EQU 13 if %yy% EQU 0 set /a w = w -2
  12. if %m% EQU 14 if %yy% EQU 0 set /a w = w -2
  13. if %m% EQU 13 if %yy% NEQ 0 set /a w = w - 1
  14. if %m% EQU 14 if %yy% NEQ 0 set /a w = w - 1
  15. if %w% EQU -1 set /a w = 6
  16. if %w% EQU 0 set /a w = 7

  17. @echo %w%
复制代码
发表于 2012-2-21 21:48:33 | 显示全部楼层
居然有人这么做……
发表于 2012-2-22 03:46:12 | 显示全部楼层
那两句 if neq 的判断没有必要,反而有逻辑错误,应写成:
  1. if %date:~5,1% EQU 0 (set m=%date:~6,1%) else set m=%date:~5,2%
  2. if %date:~8,1% EQU 0 (set d=%date:~9,1%) else set d=%date:~8,2%
复制代码
或者按惯例直接写成一句:
  1. set /a m=1%date:~5,2%-100,d=1%date:~8,2%-100
复制代码
另,也写过日期转星期的函数,如下:
  1. :::::::::::::::weeks 日期转星期函数::::::::::::::::::
  2. :: 用法:                                          ::
  3. ::  call :weeks Date retvar                        ::
  4. ::        %1  Date    要计算的日期,不判断是否合法 ::
  5. ::                    格式(YYYYMMDD)             ::
  6. ::        %2  retvar  用于保存星期(1~7)的变量名  ::
  7. :::::::::::::::::::::::::::::::::::::::::::::::::::::

  8. :weeks Date retvar   ###### 公式算法
  9. setlocal disabledelayedexpansion&set "date=%~1"
  10. set /a m=1%date:~4,2%-100,m+=!(m/3)*12,w=(7%date:~6,2%+2*m+3*(m+1)/5+(y=%date:~,4%-m/13)+y/4-y/100+y/400)%%7+1
  11. set "%~2=%w%"
复制代码
发表于 2012-2-23 16:59:30 | 显示全部楼层
明明是星期二
 楼主| 发表于 2012-2-23 23:46:47 | 显示全部楼层
谢谢版主,问题解决了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 22:12 , Processed in 0.017268 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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