Expression Régulière Interval de temps
Résolu
Maillon
Messages postés
157
Statut
Membre
-
Maillon Messages postés 157 Statut Membre -
Maillon Messages postés 157 Statut Membre -
Bonjour,
Voilà je récupère l'heure d'une machine et j'aimerai la comparer à l'heure d'une autre machine. Jusque là ça va (lol).
Par contre j'aimerai dire que les heures sont les mêmes si il y a maximum 15 min d'écart entre les deux machines (minutes en plus ou en moins).
Donc par exemple si il est 18h35 sur la machine A et 18h25 sur la machine B bah que la sortie soit "les deux machines sont à la même heure".
Par contre il faudrait qu'il gère aussi le changement d'heure et tout ça en bash.
Et tout ça malheureusement c'est trop compliqué pour moi.
Je vais essayer de faire quelque chose mais c'est pas gagné.
Quelqu'un aurait-il une idée ?
Merci beaucoup.
Cordialement,
Voilà je récupère l'heure d'une machine et j'aimerai la comparer à l'heure d'une autre machine. Jusque là ça va (lol).
Par contre j'aimerai dire que les heures sont les mêmes si il y a maximum 15 min d'écart entre les deux machines (minutes en plus ou en moins).
Donc par exemple si il est 18h35 sur la machine A et 18h25 sur la machine B bah que la sortie soit "les deux machines sont à la même heure".
Par contre il faudrait qu'il gère aussi le changement d'heure et tout ça en bash.
Et tout ça malheureusement c'est trop compliqué pour moi.
Je vais essayer de faire quelque chose mais c'est pas gagné.
Quelqu'un aurait-il une idée ?
Merci beaucoup.
Cordialement,
A voir également:
- Expression Régulière Interval de temps
- Renommer plusieurs fichiers en même temps - Guide
- Combien de temps reste une story sur facebook - Guide
- Sablier snap temps ✓ - Forum Snapchat
- 2go internet combien de temps ✓ - Forum Mobile
- Expression écrite cm1 cm2 télécharger gratuit - Télécharger - Éducatifs
10 réponses
hello
utilise le temps en secondes : date +%s
ça simplifie les calculs
utilise le temps en secondes : date +%s
ça simplifie les calculs
jipicy
Messages postés
41342
Statut
Modérateur
4 896
Décidément ;-))
Salut,
Utilises le format "EPOCH" de la commande "date" (man date, info date) et compare les valeurs retournées :
Utilises le format "EPOCH" de la commande "date" (man date, info date) et compare les valeurs retournées :
[tmpfs]$ date --date='1970-01-01 18:35' +%s 63300 [tmpfs]$ date --date='1970-01-01 18:25' +%s 62700 [tmpfs]$;-))
Merci à vous deux, cependant deux soucis à ça :
d'une part je suis sous SunOS et la commande de jipicy ne marche pas. Le %s n'est pas reconnu apparement.
d'autre part il faut que je compare les deux valeurs (que j'arrive pas à avoir) et que je fasse un c'est égal + ou - à ça. Seulement je sais pas comment faire ça.
Cordialement,
d'une part je suis sous SunOS et la commande de jipicy ne marche pas. Le %s n'est pas reconnu apparement.
d'autre part il faut que je compare les deux valeurs (que j'arrive pas à avoir) et que je fasse un c'est égal + ou - à ça. Seulement je sais pas comment faire ça.
Cordialement,
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci dubcek mais je préfèrerai savoir le faire en shell, je pense que c'est possible en utilisant une expression régulière mais j'arrive pas à trouver laquelle.
Je vais continuer à chercher.
Merci de votre aide.
Cordialement,
Je vais continuer à chercher.
Merci de votre aide.
Cordialement,
En fait il faudrait que je convertisse la date actuelle en seconde (je la met dans une variable $a) puis je convertis 15 min en seconde (dans une variable $b) puis je fais :
si $A est compris entre A+B ou A-B alors OK sinon KO.
Voilà seulement ya un hic c'est que l'option %s (qui permet de convertir une date en seconde) ne marche pas sous sunOs apparement.
Cordialement,
si $A est compris entre A+B ou A-B alors OK sinon KO.
Voilà seulement ya un hic c'est que l'option %s (qui permet de convertir une date en seconde) ne marche pas sous sunOs apparement.
Cordialement,
Merci jipicy pour ta réponse ;-)
J'ai regarder la commande bc et ça à l'air d'être un truc de pas mal .... quand tu sais l'utiliser mais franchement j'y comprends absolument rien à cette commande.
Je continue à essayer de comprendre mais est ce que tu aurais des exemples qui se rapprochent de ce que je souhaite pour que je puisse comprendre un peu mieux ?
Merci.
Cordialement,
J'ai regarder la commande bc et ça à l'air d'être un truc de pas mal .... quand tu sais l'utiliser mais franchement j'y comprends absolument rien à cette commande.
Je continue à essayer de comprendre mais est ce que tu aurais des exemples qui se rapprochent de ce que je souhaite pour que je puisse comprendre un peu mieux ?
Merci.
Cordialement,
# On récupère l'heure
jp@MDK:~/tmpfs ssh$ DATE=$(date +%H:%M)
# On vérifie
jp@MDK:~/tmpfs ssh$ echo ${DATE}
11:41
# on affiche que les heures
jp@MDK:~/tmpfs ssh$ echo ${DATE%:*}
11
# on affiche que les minutes
jp@MDK:~/tmpfs ssh$ echo ${DATE#*:}
41
# on calcule les secondes (nbre heures X 3600) + (nbre minutes X 60)
jp@MDK:~/tmpfs ssh$ echo "(${DATE#*:} * 3600) + (${DATE%:*} * 60)" | bc
148260
# ça c'est les 15 minutes de battements en secondes
jp@MDK:~/tmpfs ssh$ echo "15 * 60" | bc
900
jp@MDK:~/tmpfs ssh$Je te laisse calculer l'intervalle...
En fait j'ai trouvé une autre solution plus compliqué mais que je comprends tout le temps lol :-)
Là voilà :
# heure de la machine maître
heure1=`date +%H`
minute1=`date +%M`
seconde1=`date +%S` h1=`expr $heure1 \* 3600`
m1=`expr $minute1 \* 60`
hm1=`expr $h1 + $m1`
date1=`expr $hm1 + $seconde1`
# heure de la machine distante
heure2=`date +%H`
minute2=`date +%M`
seconde2=`date +%S` h2=`expr $heure2 \* 3600`
m2=`expr $minute2 \* 60`
hm2=`expr $h2 + $m2`
date2=`expr $hm2 + $seconde2`
# 15 min c'est 900 secondes donc :
interval=900
bipplus=`expr $date1 + $interval`
bipmoins=`expr $date1 - $interval`
if ( [ $date2 -le $bipplus ] && [ $date2 -ge $bipmoins ] )
then
echo "ok";
else
echo "ko";
fi
Je vais essayer de faire un code plus propre avec la méthode de jipicy. Par contre le perl c'est pas encore pour moi même si je m'y met un peu j'aime pas trop l'utiliser encore mais merci quand même dubcek.
En tout cas merci jipicy et dubcek pour votre aide qui me sera utile à l'avenir.
Cordialement,
Là voilà :
# heure de la machine maître
heure1=`date +%H`
minute1=`date +%M`
seconde1=`date +%S` h1=`expr $heure1 \* 3600`
m1=`expr $minute1 \* 60`
hm1=`expr $h1 + $m1`
date1=`expr $hm1 + $seconde1`
# heure de la machine distante
heure2=`date +%H`
minute2=`date +%M`
seconde2=`date +%S` h2=`expr $heure2 \* 3600`
m2=`expr $minute2 \* 60`
hm2=`expr $h2 + $m2`
date2=`expr $hm2 + $seconde2`
# 15 min c'est 900 secondes donc :
interval=900
bipplus=`expr $date1 + $interval`
bipmoins=`expr $date1 - $interval`
if ( [ $date2 -le $bipplus ] && [ $date2 -ge $bipmoins ] )
then
echo "ok";
else
echo "ko";
fi
Je vais essayer de faire un code plus propre avec la méthode de jipicy. Par contre le perl c'est pas encore pour moi même si je m'y met un peu j'aime pas trop l'utiliser encore mais merci quand même dubcek.
En tout cas merci jipicy et dubcek pour votre aide qui me sera utile à l'avenir.
Cordialement,