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

[日期时间] [已解决]批处理怎样计算某天是当年中的某一天,某一周?

[复制链接]
发表于 2012-10-23 10:13:22 | 显示全部楼层 |阅读模式
本帖最后由 珠七七 于 2012-10-23 14:05 编辑

请问一下,我要用批处理计算某天是当年中的某一天,某一周。请各位帮忙设计一下代码。谢谢!
例如:
2012年02月02日   
是2012年的第33天,第5周。

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2012-10-23 10:55:01 | 显示全部楼层
  1. @echo off
  2. set mydate=2012-02-02
  3. call :DateToOrdinal %mydate:~0,4% %mydate:~5,2% %mydate:~8,2% year doy
  4. call :DateToWeek %mydate:~0,4% %mydate:~5,2% %mydate:~8,2% yn cw dw
  5. echo %mydate%是%year%年的第%doy%天,第%cw%周。
  6. pause
  7. goto :eof

  8. :DateToOrdinal %yy% %mm% %dd% year doy
  9. setlocal ENABLEEXTENSIONS
  10. set yy=%1&set mm=%2&set dd=%3
  11. if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
  12. set /a dd=100%dd%%%100,mm=100%mm%%%100
  13. set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
  14. set /a j=j/5+dd+y*365+y/4-y/100+y/400-32045
  15. set /a y=yy+4799,k=y*365+y/4-y/100+y/400-31738,o=j-k+1
  16. if %o% LSS 100 set o=0%o%&if %o% LSS 10 set o=00%o%
  17. endlocal&set %4=%yy%&set %5=%o%&goto :EOF

  18. :DateToWeek %yy% %mm% %dd% yn cw dw
  19. setlocal ENABLEEXTENSIONS
  20. set yy=%1&set mm=%2&set dd=%3
  21. if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
  22. set /a dd=100%dd%%%100,mm=100%mm%%%100
  23. set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,Jd=153*m+2
  24. set /a Jd=Jd/5+dd+y*365+y/4-y/100+y/400-32045
  25. set /a y=yy+4798,Jp=y*365+y/4-y/100+y/400-31738,t=Jp+3,Jp=t-t%%7
  26. set /a y=yy+4799,Jt=y*365+y/4-y/100+y/400-31738,t=Jt+3,Jt=t-t%%7
  27. set /a y=yy+4800,Jn=y*365+y/4-y/100+y/400-31738,t=Jn+3,Jn=t-t%%7
  28. set /a Jr=%Jp%,yn=yy-1,yn+=Jd/Jt,yn+=Jd/Jn
  29. if %Jd% GEQ %Jn% (set /a Jr=%Jn%) else (if %Jd% GEQ %Jt% set /a Jr=%Jt%)
  30. set /a diff=Jd-Jr,cw=diff/7+1,wd=diff%%7,wd+=1
  31. if %cw% LSS 10 set cw=0%cw%
  32. endlocal&set %4=%yn%&set %5=%cw%&set %6=%wd%&goto :EOF
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2012-10-23 14:04:13 | 显示全部楼层
非常谢谢!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 15:22 , Processed in 0.026326 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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