Expression Régulière Interval de temps
Résolu
Maillon
Messages postés
156
Date d'inscription
Statut
Membre
Dernière intervention
-
Maillon Messages postés 156 Date d'inscription Statut Membre Dernière intervention -
Maillon Messages postés 156 Date d'inscription Statut Membre Dernière intervention -
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
- Expression écrite cm1 cm2 télécharger gratuit - Télécharger - Éducatifs
- Temps pour soi iphone - Guide
- 35 go internet combien de temps ✓ - Forum Mobile
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
40842
Date d'inscription
Statut
Modérateur
Dernière intervention
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,