IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Commande date. Faire des opération sur l'heure?


Sujet :

Linux

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut Commande date. Faire des opération sur l'heure?
    salut,
    voilà, j'utilise la commande date dans mon script KSH pour obtenir la date et l'heure actuelle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    str_date="date +%d%m%Y"
    str_time="date +%H%M"
    Je voudrais savoir si y'a moyen de faire des calculs sur str_time avec la commande date ou une autre commande.
    Exemple :
    str_time=0958 (9h58) et j'aimerais lui ajouter 10 minutes.
    si je fais un calcul normal j'aurais 0968...ce qui est plus une heure valide...Existe t'il une commande qui permet d'obtenir 1008 ???
    Ou faut que je fasse une fonction ksh qui fasse ça ? parce que autrement, ça a l'air galère à faire...
    = /
    Merci

    Delphine

  2. #2
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 39
    Points : 46
    Points
    46
    Par défaut
    avec awk tu la fait en directe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /etc/namedb>date   
    Thu Aug 19 10:19:19 MEST 2004
    /etc/namedb>Heureplusdeux=`date | awk '{$4+2}'`
    /etc/namedb>echo $Heureplusdeux
    12
    /etc/namedb>
    en generant une variable pour l'heure, munite secondes etc ensuite tu peux manipuler le temps comme tu veux...

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    hello,
    ça marche pas...
    j'ai fait exactement ça, rien ne se passe, ca m'affiche une chaine vide...
    ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    STR=`date | awk '{$4+2}'`
    echo $STR
    meme en essayant avec /usr/bin/awk...

    $STR est vide...

    Delphine

  4. #4
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Es tu sûre d'avoir bien lu le man date ?

    j'y lis ça pour ma part:
    EXEMPLES
    Pour afficher la date de l'avant-veille :

    date --date '2 days ago'

    Pour afficher la date du jour à venir dans 3 mois plus un jour :

    date --date '3 months 1 day'

    Pour afficher le numéro du jour de Noêl de l'année en cours :

    date --date '25 Dec' +%j
    peut être date --date '10 minutes' ferait l'affaire ? (il faudra reformater... bien sûr)
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  5. #5
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [root@abbeville tmp]# date "+%H%M"
    1522
    [root@abbeville tmp]# date --date '10 minutes' "+%H%M"
    1532
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    salut ggnore,
    ça marche pas la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    date --date '10 minutes' "+%H%M"
    Ca me dit :
    date: illegal option -- -
    Usage: date [-u] [+format]
    date [-u] [mmddhhmm[[cc]yy]]
    date [-a [-]sss.fff]

    (je test sur HP-UX (j'ai pas de session linux), mais mon script doit fonctionner sur les 2 plateformes...)

  7. #7
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Alors là, chuis désolé mais je peux pas t'aider.
    Mon exemple n'est pas pipot, mais si tu n'as pas la même version que moi au niveau shell/bash/terminal (je sais pas à quel niveau t'as pas la même version en fait )

    désolé... et bon courage. Menfin si tu programmes en C, tu devrais pouvoir t'en sortir avec la fonction strftime et la structure tm
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  8. #8
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    ohhh nooooonnnn !
    me laisse paaaaaaa
    lol
    je fais un prog C en parrallèle d'un script ksh (vu que je bloque sur le script ksh, j'peux faire du C )

    Bon, bah, zut alors....

    Delphine

    any idea ?

  9. #9
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Je veux pas te laisser, mais je ne peux pas t'aider.

    Nos programmes date sont différents.
    Après il est clair que tu peux "t'amuser " à faire tout reprogrammer en shell.

    {
    Tu formates ta date avec des séparateurs
    Tu parses tout ça pour récupérer chaque donnée
    }
    ou
    {
    tu récupères directement chaque variable en appelant date pour chaque valeur
    }

    Tu fais un algo qui permet de changer par exemple l'heure quand les minutes sont arrivées à 60 ou +


    Je ne connais pas les limites de ton projet, et j'avoue que j'ai du taff à faire, même si je m'y mets pas vraiment.

    Je suis sûr qu'avec un peu de C et la fonction susnommée, tu peux t'en sortir très facilement et avec moins de travail qu'en shell.

    Ton projet a l'air sympa, t'as du bol, savoure.

    Bon courage.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  10. #10
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    voila ma soluce :
    Code : 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
    28
    29
    30
    31
    32
    33
     
      MINUTE=`date +%M`
      HOUR=`date +%H`
      END_MINUTE=`expr $MINUTE + 10`
      END_HOUR=$HOUR
      # if time is greater than 23h49 (the maximum time of the current day is 23h59)
      # Otherwise, we must change the date to...
      if [ $HOUR -eq 23 ] && [ $MINUTE -gt 49 ]
      then
        END_HOUR=23
        END_MINUTE=59
      else
        # if minute is greater than 59, add on hour and recalculate minute
        if [ $END_MINUTE -gt 59 ]
        then
          END_MINUTE=`expr $END_MINUTE - 60`
          END_HOUR=`expr $HOUR + 1`
          if [ $END_HOUR -ge 24 ]
          then
            END_HOUR="00"
          fi
        fi
      fi
      # minute and hour must be on 2 characters (hhmm)
      if [ ${#END_MINUTE} -ne 2 ]
      then
        END_MINUTE="0${END_MINUTE}"
      fi
      if [ ${#END_HOUR} -ne 2 ]
      then
         END_HOUR="0${END_HOUR}"
      fi
      LEND="(${DU_DATE},${END_HOUR}${END_MINUTE})"
    voili voila
    je met ce pb résolu
    mais si y'en a qui ont d'autres astuces, je suis prenante

    Delphine

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Faire des sauvegardes via Internet sur un disque distant
    Par tbassetto dans le forum Composants
    Réponses: 0
    Dernier message: 27/05/2009, 22h42
  2. Faire des "barres de séparation" sur une interface?
    Par neo62matrix dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 10/06/2008, 10h22
  3. Réponses: 13
    Dernier message: 21/09/2007, 20h57
  4. Comment faire des commentaires automatique (clavier) sur eclipse ?
    Par poulette3000 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 16/05/2007, 15h54
  5. Comment faire des zones de texte sur image
    Par Myogtha dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 12/03/2007, 15h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo