SHELL Transformer timestamp en date

Résolu
Bonjour,

Est-il possible de transformer un timestamp en date en shell ?

Apparemment non ?

Merci !
Configuration: Windows XP
Firefox 2.0.0.3

14 réponses

  1. date -d @<timestamp>

    Par exemple:

    host:# date -d @1320310698.194
    jeudi 3 novembre 2011, 09:58:18 (UTC+0100)
    1. Modérateur
      Salut,

      Comme disait la SNCF dans les années 80, "si c'est possible" :
       date -d "1970-01-01 UTC + 1164128484 seconds"
      Tu peux changer le temps universel (UTC) par (CET) si besoin était ;-))
      1. Dangereux comme commande ca !

        date 200114362005 => je vais seter la date a cette valeur

        extrait du man =>
        ....
        2. To set the date and time, enter: date 0217142590
        ....
        1. Salut,

          en fait jai reglé le probleme plus facilement que prévus !
          EN perl DEPUIS un shell, ca nous donnes :

          # TimeStamp vers Date
          # perl -e "print scalar(localtime(1173279767))"

          et

          # Date vers TimeStamp
          perl -e "use POSIX ; print (mktime(10,45,11,31,4,107));"

          plus d'information sur les valeurs necessaire au mktime
          ==>

          # mktime(sec, min, hour, mday, mon, year, wday = 0, yday = 0, isdst = 0)
          #
          # The month (mon), weekday (wday), and yearday (yday) begin at zero.
          # The year (year) is given in years since 1900.
          # Sunday is 0, not 1;
          # January 1st is 0, not 1.
          #
          # I.e. January is 0, not 1;
          # I.e. The year 1995 is 95; the year 2001 is 101.
          # I.e. Calendar time for December 12, 1995, at 10:30 am : mktime( 0, 30, 10, 12, 11, 95 );
          #
          # Greenwich Mean Time (GMT)
          # Daylight saving Time (DST)
          # Coordinated Universal Time (CUT)
          ##################################

          Voilou, j'suis content, j'affiche tous mes graphs a la date desiré
          Me suis fait une petite interface simple en html qui pointe
          vers un CGI (en faite en ksh) qui recupere les valeurs, les
          format ent correctement grace a la commande perl mktime
          et je graph le tout avec rddtool. En suis bien sur un affiche
          simple des images <img src=....

          Merci quand meme pour les réponses
          +
          1. Hug !

            Et l'inversse ??

            d'une date genre 2005-20-01 vers un timestamp
            le tout toujours en shell (sh, ksh... au choix)

            Thks
            1. Merci pour la reponse, mais pour etre exact ca serait
              (dans le ca de local francais) :

              date -d 2005-10-20 +"%s
              et non
              date -d 2005-20-01 +"%s

              et cette commande ne fonctionne PAS sur unix (Aix)
              (sur linux, pas de probleme)
              Pour la simple et bonne raison qu'il n'y a pas de flag -D
              d'ou ma question.
              1. Modérateur
                et cette commande ne fonctionne PAS sur unix (Aix)
                Il eût fallu pour cela le signaler, n'étant point devin malheureusement, et malgré tous mes efforts pour changer cette situation...

                ;-DDD
            2. et cette commande ne fonctionne PAS sur unix (Aix)
              Il eût fallu pour cela le signaler, n'étant point devin malheureusement, et malgré tous mes efforts pour changer cette situation...

              ;-DDD

              Tant pis, merci quand meme.

              Charger et compiler quoi que ce soit sur une machine de prod n'est Hélas pas possible ;)

              Je vais donner un appercus de la config ca sera plus simple :

              Machine de production (pas de compilateur dessus)
              Pas d'installation de logiciel possible dessus (c'est de la prod)
              Aix 5.3 TL4 SP0

              Merci
              1. Modérateur
                En regardant le "man date" d'AIX, peux-tu essayer ça s'il te plaît :
                date  200114362005; date +"%s"
                ;-))
            3. Modérateur
              Oui c'est sûr, mais tu voulais une solution, en voilà une, après c'est à toi d'ajuster en fonction de tes besoins.

              Et si tu faisais ça dans un environnement fils ?
              (date  200114362005; date +"%s")
              ;-))
              1. Hélas po possible.

                Par contre, y'a d'autre solution sans passer par la commande DATE
                exemple en perl :

                #!/usr/bin/perl
                use POSIX;

                $sec = 0;
                $min = 0;
                $hour = 0;
                $mday = 01;
                $mon = 10;
                $year = 105;
                $wday = ?;
                $yday = ?;
                $timestamp = mktime($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,-1);
                print ($timestamp);

                ca ca marche plustot bien,
                je sais qu'il existe aussi une commande sous php assez simple qui permet de passer tres simplement d'un timestanmp a une date et inverssement.

                Le probleme c'est qu'en php... j'y connais rien
                Ca vas se finir en cgi avec du perl cette histoire :)

                Je sais pas trop si vous connaisser RRDTOOL
                c'est un outils qui permet de generer des graphs (pour des stats)
                J'affiche deja des stats sur le cpu, reseau et autre pour
                1jour, 1semaine, 1mois, 1 année
                Apres j'aurais bien voulu rajouter une petite page en
                html ou php voir cgi qui permet via un calendrier de choisir
                le jour ou l'on veux voir les stats.

                d'ou ma question, date vers timestamp.
                Avec le script perl la, je peux assez facilement faire un petit cgi
                avec un menu deroulant pour laisser choisir la date, le mois, etc
                par contre... niveau fin de mois... 29 30 ou 31
                ca, je vois pas trop comment faire.
                J'ai trouvé un petit script en php de calendrier qui gere justement
                tout ca et me sort un jole a href=tutu.cgi?01202005

                d'ou ma question initial pour convertir une date en timestamp
                :)
                1. Contributeur
                  C'est dans shellutils

                  Previously these utilities were offered as three individual sets of GNU utilities, Fileutils, Shellutils, and Textutils. Those three have been combined into a single set of utilities called Coreutils.