Blog de Jesus Forain Blog de Jesus Forain
Blog personnel de Jesus Forain où les principaux sujets sont l'informatique, la technologie, le spatial mais aussi divers sujets.
Rechercher & filtrer
Filtrer par année / mois
Derniers commentaires
Batch Windows: calculer le temps écoulé entre 2 dates
Nour (non inscrit)
dimanche 19 mars 2023 à 11:13

Bonjour,Merci d’avoir répondu à mon message ça m’a permis de corriger le script et mieux comprendre le calcul du timestamp :A la base j’étais intéressé pour calculer une période ou le temps d’expiration d’un fichier et je me suis retrouver à essayer de comprendre le TIMESTAMP (le temps en cours en s[...]

Batch Windows: calculer le temps écoulé entre 2 dates
avatar de Jesus Forain
Jesus Forain
vendredi 17 mars 2023 à 10:49

J'avais déjà essayé d'écrire un code pour convertir les timestamps Unix mais c'est bien plus compliqué que ça et j'avais abandonné, préférant utiliser les fonctions système.Dans ton script, je voit déjà un problème car les années bissextiles sont en dur, ce qui rend le programme obsolète dans le fut[...]

Batch Windows: calculer le temps écoulé entre 2 dates
Nour (non inscrit)
jeudi 16 mars 2023 à 17:35

Bonjour,J'aime bien votre scripte, il m'a aider à comprendre le temp en timestamp, en tout cas merci ça m’a permis de calculer le temps d'expiration d'un fichier (  lifetime ).En partant de ton script j'ai pu en faire un nouveau de ma manière pour calculer le timestamp en cours en dos c'est possible[...]

Batch Windows: calculer le temps écoulé entre 2 dates
Nour (non inscrit)
jeudi 16 mars 2023 à 15:05

Merci

Réparation d'une VMC: condensateur HS
avatar de Jesus Forain
Jesus Forain
mercredi 15 mars 2023 à 10:15

J'ai simplement remplacé les condensateurs sans toucher au câblage.Un moteur à 4 fils je voit pas trop comment ça se branche. Si l'un des fils était jaune/vert (terre) j'aurais compris mais pas là. Soit l'un des fils n'est pas connecté, soit il y a plusieurs bobinages pour la vitesse lente/rapide.Si[...]

Réparation d'une VMC: condensateur HS
Arno (non inscrit)
mercredi 15 mars 2023 à 07:21

Bonjour Jesus Forain 😜Peux tu me dire comment as tu effectué tes branchement. Quels fils sur quel fil du moteur. J’ai 4 fils qui sortent du moteur. 2noirs un rouge et un marron. Et je dois faire comme toi, mettre de condensateurs pour en remplacer un .Merci de ton retour 

Réparation d'un radio réveil impossible à mettre à l'heure et qui affiche 7L7
avatar de Jesus Forain
Jesus Forain
jeudi 2 mars 2023 à 23:05

Sans en connaître son fonctionnement c'est difficile.Les horloges utilisant un circuit LM8560 comme mon réveil se basent sur la fréquence du courant électrique pour mesurer le temps. Idéalement, cette fréquence devrait être de 50Hz mais en pratique elle varie légèrement selon la charge du réseau éle[...]

Réparation d'un radio réveil impossible à mettre à l'heure et qui affiche 7L7
__invité__
jeudi 2 mars 2023 à 19:53

Moi mon réveil avance tropvite. ilprend 1O minutes par jour. Que puisje faire ? 

Le cloud, ce nouveau Minitel
avatar de Jesus Forain
Jesus Forain
mardi 21 février 2023 à 00:08

Quand le fabriquant de ta caméra connectée a décidé qu'elle était arrivé en fin de vie et de ne plus la supporter alors qu'elle fonctionne parfaitement. Encore un exemple des danger du cloud, voilà pourquoi je préfère me tenir éloigné de ce genre de matériel.À voir sur Reddit

Quand les enseignes de pharmacies deviennent des clips de musique techno!
__invité__
mardi 14 février 2023 à 00:31

horrible !!

Batch Windows: calculer le temps écoulé entre 2 dates

Le batch Windows, encore appelé DOS, ne permet pas de calculer facilement la durée écoulée entre 2 dates, surtout si l'on est à cheval sur 2 jours ou 2 mois, par exemple entre le 31 octobre à 23:47 et le 1er novembre à 01:24, les fonctions étant limitées par rapport aux shells Linux.

Le timestamp n'étant pas disponible sous le shell, il faut utiliser un autre script pour le récupérer. Cet autre script est en VisualBasic et contient juste une ligne permettant de récupérer le nombre de secondes écoulées depuis le 1er janvier 1970, c'est le timestamp UNIX.

Le script VisualBasic

Crée un nouveau fichier texte, renomme-le en “timestamp.vbs” et mets ça dedans:

WScript.Echo DateDiff("s", "01/01/1970 00:00:00", Now())

On peut ensuite faire les calculs dans un script shell Windows comme dans ce fichier exemple. Attention à bien indiquer le chemin du script timestamp.vbs, ici il faut le mettre le script shell et le VBS dans le même dossier.

J'ai appelé ce script testDateDiff.cmd

@echo off

call:getTimestamp tme1

pause

call:getTimestamp tme2

echo.Timestamp au moment de l'execution        %tme1%
echo.Timestamp au moment de l'appui sur entree %tme2%

call:showDuration %tme1% %tme2%

exit /b

:: Récupération du timestamp, passer la variable en argument
:: Le script contient juste cette ligne
::     WScript.Echo DateDiff("s", "01/01/1970 00:00:00", Now())
:getTimestamp
    for /f "delims=" %%x in ('cscript /nologo timestamp.vbs') do set %1=%%x
goto:eof

:: Affiche la durée entre 2 dates
:: Les dates doivent être au format timestamp unix
:showDuration
    :: Calcul de la différence
    set /a dateDiff=%2-%1
    
    :: Jours
    set /a jj=dateDiff/86400
    
    :: Heures
    set /a hh=(dateDiff/3600)-(jj*24)
    
    :: Minutes
    set /a mm=(dateDiff/60)-(hh*60)-(jj*1440)
    
    :: Secondes
    set /a ss=dateDiff-(hh*3600)-(mm*60)-(jj*86400)
    
    :: On affiche les jours seulement s'ils ne sont pas à zéro
    if %jj% neq 0 goto dispDays
    
    echo.
    
    :: Affichage sans les jours
    echo.Duree entre les 2 timestamps %hh%h %mm%min %ss%s
    goto:eof
    
    :: Affichage avec les jours
    :dispDays
    echo.Duree entre les 2 timestamps %jj%j %hh%h %mm%min %ss%s
goto:eof

Le résultat de l'exécution du script

C:\>testDateDiff.cmd
Appuyez sur une touche pour continuer...
Timestamp au moment de l'execution           1415214976
Timestamp au moment de l'appui sur entree 1415214982

Duree entre les 2 timestamps 0h 0min 6s

C:\>

partager sur Facebook
COMMENTAIRES
Nour (non inscrit)

Merci

Nour (non inscrit)

Bonjour,
J'aime bien votre scripte, il m'a aider à comprendre le temp en timestamp, en tout cas merci ça m’a permis de calculer le temps d'expiration d'un fichier (  lifetime ).
En partant de ton script j'ai pu en faire un nouveau de ma manière pour calculer le timestamp en cours en dos c'est possible : 

::::::::::::::::::: TIMESTAMPS NOW ::::::::::::::::::::::::::::::::::::::

@echo off
:DEBUT
@cls
for /f " tokens=1-3 delims=/" %%i in ('@echo %date%') do (

set DD=%%i
set MM=%%j
set YY=%%k

set DDD=%%i
set MMM=%%j
set YYY=%%k

)

for /f " tokens=1-3 delims=: " %%a in ('@echo %time%') do (

set HH=%%a
set MN=%%b
set SS=%%c

set HHH=%%a
set MNN=%%b
set SSS=%%c

)

:: 12 (années bissextiles) jours
:: Tout est calculé en secondes depuis 01/01/1970 00:00
set /a YY=(((YY-1970)*365)+12)*86400
set /a MM=(MM-1)*30*86400
set /a DD=(DD-1)*86400
set /a HH=HH*60*60
set /a MN=MN*60
SET /A TimestampNOW=YY+MM+DD+HH+MN+SS
@ECHO.
@ECHO. Timestamp : %TimestampNOW%  %DDD%/%MMM%/%YYY%  %HHH%:%MNN%:%SSS%
@ECHO.
pause
GOTO DEBUT
:::::::::::::::::::: END TIMESTAMPS NOW ::::::::::::::::::::::::::::::::::::::

Bien cordialement
Nour

Avatar de Jesus Forain

J'avais déjà essayé d'écrire un code pour convertir les timestamps Unix mais c'est bien plus compliqué que ça et j'avais abandonné, préférant utiliser les fonctions système.

Dans ton script, je voit déjà un problème car les années bissextiles sont en dur, ce qui rend le programme obsolète dans le futur. D'ailleurs les années bissextiles se calculent, voir sur Wikipédia, premier paragraphe de l'article.

Ensuite il y a les secondes intercalaires, ce sont des secondes ajoutés aléatoirement pour maintenir le temps UTC synchronisé avec la rotation de la Terre.

Garder les horloges et les calendriers synchronisés est quelque chose de complexe, j'en ai parlé ici.

Nour (non inscrit)

Bonjour,

Merci d’avoir répondu à mon message ça m’a permis de corriger le script et mieux comprendre le calcul du timestamp :

A la base j’étais intéressé pour calculer une période ou le temps d’expiration d’un fichier et je me suis retrouver à essayer de comprendre le TIMESTAMP (le temps en cours en secondes) voici la dernière version sachant le calcule n'est plus bon ( bug ) si je teste une année depuis 2038 mais mon scripte devrait être correct.
Merci 
Bien cordialement.
Ci-dessous le script :

rem ::::::::::::::::::: TIMESTAMPS NOW ::::::::::::::::::::::::::::::::::::::
:DEBUT
echo off

@cls


for /f " tokens=1-3 delims=/" %%i in ('echo %date%') do (

@set DD=%%i
@set MM=%%j
@set YY=%%k

@set DDD=%%i
@set MMM=%%j

 

)
rem echo %YY% %MM% %DD%

rem calcule mois en cours
@set /a MM=(MM-1)
rem JANVIER 31
IF %MM% EQU 1 SET MM=31
rem FÉVRIER 28
IF %MM% EQU 2 SET /A MM=31+28
rem MARS 31
IF %MM% EQU 3 SET /A MM=31+28+31
rem AVRIL     30
IF %MM% EQU 4 SET /A MM=31+28+31+30
rem MAI     31
IF %MM% EQU 5 SET /A MM=31+28+31+30+31
rem JUIN     30
IF %MM% EQU 6 SET /A MM=31+28+31+30+31+30
rem JUILLET 31
IF %MM% EQU 7 SET /A MM=31+28+31+30+31+30+31
rem AOÛT     31
IF %MM% EQU 8 SET /A MM=31+28+31+30+31+30+31+31
rem SEPTEMBRE     30
IF %MM% EQU 9 SET /A MM=31+28+31+30+31+30+31+31+30
rem OCTOBRE     31
IF %MM% EQU 10 SET /A MM=31+28+31+30+31+30+31+31+30+31
rem NOVEMBRE     30
IF %MM% EQU 11 SET /A MM=31+28+31+30+31+30+31+31+30+31+30
rem DÉCEMBRE     31
IF %MM% EQU 12 SET /A MM=31+28+31+30+31+30+31+31+30+31+30+31


@echo. 
@echo. Tester le temps dans une annee 
@echo.
@echo. la date et l'heure sont d'aujourd'hui
@echo.
@echo. bug a partir de l'an 2038
@echo.
SET /P YY=Enter une annee :

@set YYY=%YY%

for /f " tokens=1-3 delims=: " %%a in ('echo %time%') do (

@set HH=%%a
@set MN=%%b
@set SS=%%c


@set HHH=%%a
@set MNN=%%b
@set SSS=%%c


)
rem @set SS=%%c
rem echo %HH% %MN% %SS%
rem (années bissextiles) jours étant donné que la 1ere année 1972 bissextiles depuis 1970
rem et une année bissextiles arrive tout les 4 ans pour avoir la 1ere annee depuis 1970 dans le calcule donc : année en cours divisé (-) 1968 (/) 4 et 1972 devient la 1ere année bissextiles
@set /a BISSEXTILES=(YY-1968)/4
rem @echo bissextiles %bissextiles%

rem calcule le nombre d'annee depuis 1970*365+BISSEXTILES* LE NB de seconde dans la journée 86400
@set /a YY=(((YY-1970)*365)+BISSEXTILES)*86400
rem @set /a YY=(YY-1970)*365*86400

rem les mois en ss annee en cours
@set /a MM=MM*86400
rem les jours en ss annee en cours
@set /a DD=(DD-1)*86400
rem les heur en ss jour en cours
@set /a HH=HH*60*60
rem les minules en ss jour en cours
@set /a MN=MN*60

@set /A TimestampNOW=YY+MM+DD+HH+MN+SS


@ECHO.
@ECHO. NOMBRE ANNEEE BISSEXTILES DEPUIS 1970 : %BISSEXTILES%
@ECHO.
@ECHO. Timestamp : %TimestampNOW%  %DDD%/%MMM%/%YYY%  %HHH%:%MNN%:%SSS%
@ECHO.
pause
GOTO DEBUT
rem :::::::::::::::::::: END TIMESTAMPS NOW ::::::::::::::::::::::::::::::::::::::

 

Envoyer un commentaire
chargement de l'éditeur en cours...
Envoi d'images

Envoi de fichiers

Attention! vous n'êtes pas connecté, vous postez en mode invité.