Bonjour les développeurs

Ce script calcule la différence entre 2 dates. Il affiche le résultat en jours ( days) et en heure ( HH:MM:SS ).

Je voudrais savoir comment convertir les jours en date ( DD/MM/YYYY ).

Voici un exemple:

Enter two timestamps in "DD/MM/YYYY HH:MM:SS" format

Enter start timestamp: 08/04/2004 10:12:23

Enter end timestamp: 31/08/2021 07:18:47

Duration: 6353 days and 21:06:24

Appuyez sur une touche pour continuer...

Voici le script:

Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
@echo off
setlocal EnableDelayedExpansion
 
rem Get elapsed days/time between two timestamps in "DD/MM/YYYY HH:MM:SS" format
rem Antonio Perez Ayala aka Aacini
 
rem Define the "Date in DDMMYYYY format" To "Julian Day Number" conversion "function"
set "DateToJDN(Date)=( a=1Date, y=a%%10000, a/=10000, m=a%%100, d=a/100-100, a=(m-14)/12, (1461*(y+4800+a))/4+(367*(m-2-12*a))/12-(3*((y+4900+a)/100))/4+d-32075 )"
 
echo Enter two timestamps in "DD/MM/YYYY HH:MM:SS" format
echo.
set /P "stamp1=Enter start timestamp:   "
echo.
set /P "stamp2=Enter  end  timestamp:   "
 
for /F "tokens=1-4" %%a in ("%stamp1% %stamp2%") do set "date1=%%a" & set "time1=%%b" & set "date2=%%c" & set "time2=%%d"
 
set /A "days=!DateToJDN(Date):Date=%date2:/=%! - !DateToJDN(Date):Date=%date1:/=%!"
set /A "ss=(((1%time2::=-100)*60+1%-100) - (((1%time1::=-100)*60+1%-100)"
if %ss% lss 0 set /A "ss+=60*60*24, days-=1"
set /A "hh=ss/3600+100, ss%%=3600, mm=ss/60+100, ss=ss%%60+100"
 
echo/
echo Duration: %days% days and %hh:~1%:%mm:~1%:%ss:~1%
echo.
pause

Merci de bien vouloir m'aider.