Shell : comment ajouter une seconde à une heure donnée?

Shell : comment ajouter une seconde à une heure donnée? - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 22-12-2008 à 19:52:55    

Bonsoir,
J'ai une heure au format HH:MM:SS, par ex 18:57:30
 
Je dois ajouter UNE seconde, par script.
 
J'ai vu que par exemple

Code :
  1. date --date '1 sec'

ajoute une seconde à l'heure système. Cependant apparament je n'ai pas trouvé comment donner à "date" une date d'entrée pour qu'il travaille sur cette date de base et non sur la date système.
 
Y a-t-il une solution?
 
Sinon, comment faire? A savoir que je ne dois pas gérer le jour mais uniquement ajouter une seconde à une heure donnée...
 
Merci :)
 
edit : de préférence en shell script :p


Message édité par sarah166 le 22-12-2008 à 20:13:39
Reply

Marsh Posté le 22-12-2008 à 19:52:55   

Reply

Marsh Posté le 22-12-2008 à 20:10:24    

fait un bout de perl

Reply

Marsh Posté le 23-12-2008 à 00:13:20    

Tu as trouvé ta réponse : l'option --date ajoute les différents arguments.
$ date --date "18:57:30 1 sec"
$ date --date "3 min 18:57:30 1 sec"
$ date --date "3 min 8 min"
$ date --date "7 sec 2006-08-07 12:34:56"
 
Une date est forcément "absolue", avec jour, mois, année et heure. Tu ne peux pas avoir "juste une heure". Si tu ne précises pas, ça complète les valeurs manquantes par rapport à la date actuelle.

Reply

Marsh Posté le 23-12-2008 à 01:30:17    

Je vous remercie pour vos réponses, et en particulier raph0001. C'est exactement ce que je cherchais.
Merci!!

Reply

Marsh Posté le 23-12-2008 à 10:41:03    

pas portable sur les date pas GNU.

Reply

Marsh Posté le 06-01-2009 à 17:58:35    

On pose une journée arbitraire, genre le 01/01/2000
 
On convertit en timestamp (secondes depuis le 01/01/1970) cette date + ton truc HH:MM:SS :

date --date="2000-01-01 ${TON_TRUC}" "+%s"


 
On ajoute une seconde. L'addition se fait comme ça :
echo $((42 + 1))   (c'est du bash)
expr 42 + 1  (c'est mieux)
 
On reconvertit au format dd-mm-YY HH:MM:SS

date --date=@"${NOUVEAU_TRUC}" "+%Y-%m-%d %H:%M:%S"


 
On coupe pour virer la partie inutile

cut -d ' ' -f 2


 
 
Le tout assemblé :

$TON_TRUC="12:01:42"
$date --date=@"$(expr $(date --date="2000-01-01 ${TON_TRUC}" "+%s" ) + 1)" "+%Y-%m-%d %H:%M:%S" | cut -d ' ' -f 2
12:01:43


 
 
Étonnant non :o


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 06-01-2009 à 18:30:57    

Il en faut du code pour rajouter 1 sec à une date dis donc :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 07-01-2009 à 07:41:43    

esox_ch a écrit :

Il en faut du code pour rajouter 1 sec à une date dis donc :o


 
Ben si on veut pas utiliser le "1 sec" faut additionner soi-même. :/
Et si on veut pas faire les conversions à la main faut utiliser date (pas d'API en shell, les commandes sont l'API)  :o


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed