[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 珠七七 于 2012-10-23 14:05 编辑

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

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2
土土土土土土土土土土土

  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

评分人数

TOP

非常谢谢!!
土土土土土土土土土土土

TOP

返回列表