Board logo

标题: [日期时间] 批处理如何把1970,年1月1日,改成指定的时间? [打印本页]

作者: 单车少男    时间: 2015-7-6 14:27     标题: 批处理如何把1970,年1月1日,改成指定的时间?

  1. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2. :DateToDays %yy% %mm% %dd% days
  3. ::
  4. :: 作者:Ritchie Lawrence, 2002-09-26. 版本 1.0
  5. ::
  6. :: 功能:返回从 1970 年 1 月 1 日到给定的日期之间所经过的天数。
  7. ::       适用于 NT4/2000/XP/2003.
  8. ::
  9. :: 参数:%1 待转换的年,两位或者四位(传值调用)
  10. ::       %2 待转换的月,可以以零开头(传值调用)
  11. ::       %3 待转换的日,可以以零开头(传值调用)
  12. ::       %4 该变量用于接收所经过的天数(引用调用)
  13. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  14. setlocal ENABLEEXTENSIONS
  15. set yy=%1&set mm=%2&set dd=%3
  16. if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
  17. set /a dd=100%dd%%%100,mm=100%mm%%%100
  18. set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
  19. set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
  20. endlocal&set %4=%j%&goto :EOF
复制代码

作者: DAIC    时间: 2015-7-6 15:38

改这个函数肯定不是你的最终目的,具体说说你想干嘛吧。
作者: pcl_test    时间: 2015-7-6 19:13

本帖最后由 pcl_test 于 2015-7-6 19:17 编辑
  1. 1>1/* :
  2. @echo off
  3. title 计算两个指定日期相差的天数
  4. set "date1=2015-07-01"
  5. set "date2=2015-7-6"
  6. for /f "delims=" %%a in ('echo;%date1% %date2% ^|cscript -nologo -e:jscript %~f0') do set "days=%%a"
  7. echo;%date1%至%date2%共相差%days%天
  8. pause&exit/b
  9. */
  10. var Arr = WScript.StdIn.ReadLine().replace(/[^\d\s]/g,"-").split(" ");
  11. var oDate1= Arr[0].split("-");
  12. var oDate2= Arr[1].split("-");
  13. var strDateS = new Date(oDate1[0], oDate1[1]-1, oDate1[2]);
  14. var strDateE = new Date(oDate2[0], oDate2[1]-1, oDate2[2]);
  15. var Days = parseInt(Math.abs(strDateS - strDateE )/1000/60/60/24);
  16. WSH.Echo(Days);
复制代码

作者: CrLf    时间: 2015-7-6 20:43

举个栗子
  1. @echo off
  2. call :DateToDays 2015 1 1 天数
  3. call :DateToDays 0 1 1 修正值
  4. set /a 公元伊始的天数=天数-修正值
  5. echo 公元伊始的天数
  6. pause
复制代码





欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2