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.
Partager