In tip 0721, I calculated the difference between two dates. In tip 0863, I performed Time Math.

I have scripted DateTimeDiff.bat to return the difference between two date/times.

The syntax for using DateTimeDiff.bat is:

\[call\] DateTimeDiff Unit Date1 Time1 Date2 Time2 Diff

Where:

Unit     can be D to return the difference in whole days,
                H to return the difference in whole hours,
                N to return the difference in whole minutes,
                S to return the difference in seconds.

Date1    First date in your date format, like MM/DD/YYYY. Quotes are NOT allowed.

Time1    The time on Date1, in your time format, like HH:MM:SS. Quotes are NOT allowed.

Date2    Second date in your date format, like MM/DD/YYYY. Quotes are NOT allowed.

Time2    The time on Date2, in your time format, like HH:MM:SS. Quotes are NOT allowed.

Diff     is a call directed numeric environment variable that will contain the
         difference, in Unit units, between the two date/times. If date/time 1 is greater than date/time 2, Diff we be negative.
         If the parameters are incorrect, Diff will be -99999999.

Example:

To calculate the number of hours until Christmas:

call DateTimeDiff H %DATE% %TIME:~0,8% 12/25/%DATE:~6,4% 00:00:00 Hours
@echo The number of hours until Christmas is %Hours%

DateTimeDiff.bat contains:

@echo off
if \{6\}==\{\} @echo Syntax: DateTimeDiff Unit Date1 Time1 Date2 Time2 Diff&goto :EOF
if exist "%TEMP%\DateTimeDiff.vbs" goto vbs
@echo dim  unt, dt1, dt2, dif, objArguments>"%TEMP%\DateTimeDiff.vbs"
@echo set objArguments = Wscript.Arguments>>"%TEMP%\DateTimeDiff.vbs"
@echo unt=objArguments(0)>>"%TEMP%\DateTimeDiff.vbs"
@echo dt1=objArguments(1)>>"%TEMP%\DateTimeDiff.vbs"
@echo dt2=objArguments(2)>>"%TEMP%\DateTimeDiff.vbs"
@echo dif=datediff(unt,dt1,dt2)>>"%TEMP%\DateTimeDiff.vbs"
@echo WScript.Echo dif>>"%TEMP%\DateTimeDiff.vbs"
:vbs
set /a %6=-99999999
for /f "Tokens=*" %%d in ('cscript //nologo "%TEMP%\DateTimeDiff.vbs" %1 "%2 %3" "%4 %5"') do set /a %6=%%d