Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment convertir la date d'un timestamp linux

Sujet résolu
    2 septembre 2015 à 14:44:04

    Bonjour,

    Je cherche à convertir le champ timestamp linux comme l'exemple ci dessous:

    # Dans cet exemple :  system01;toto;pts/3;:0;Mon;Oct;13;08:56;-;down;(00:01);
    
    #Le champ timestamp
    Mon;Oct;13;08:56;
    
    #Au format date adéquat
    13/10/2015 a 08:56

    Voici le code qui devait me permettre de le faire :

    datetime.strptime(' '.join(item[4:8]), "%a %b %d %H:%M").strftime('%d/%m/%Y a %H:%M')

    Le problème c'est le champ année de mon timestamp ainsi j'ai en retour ce résultat ci : 13/10/1900 a 08:56

    Comment peux-t-on procéder dans ce cas là?

    Merci par avance



    • Partager sur Facebook
    • Partager sur Twitter
      2 septembre 2015 à 15:01:51

      Comme ceci peut-être:

      !/usr/bin/env python3

      -- coding: utf-8 --

      import datetime

      data = "system01;toto;pts/3;:0;Mon;Oct;13;08:56;-;down;(00:01);"

      split data

      data = data.split(";") print(data)

      parse date

      date = datetime.datetime.strptime(' '.join(data[4:8]), "%a %b %d %H:%M")

      No year provided, so use today's year

      date = date.replace(year=datetime.datetime.today().year)

      print(date.strftime('%d/%m/%Y a %H:%M'))

      </pre>

      -
      Edité par Dan737 2 septembre 2015 à 15:03:23

      • Partager sur Facebook
      • Partager sur Twitter
        2 septembre 2015 à 16:24:33

        J'ai une erreur :

        Traceback <small>(most recent call last)</small>

        File "views.py", line 18, in last_logon

        date = date.replace(year=datetime.datetime.today().year)

        AttributeError: type object 'datetime.datetime' has no attribute 'datetime'

         Je suis en python 2.7

        -
        Edité par Taylor08 2 septembre 2015 à 16:35:51

        • Partager sur Facebook
        • Partager sur Twitter
          2 septembre 2015 à 17:07:28

          >>> date
          '13/10/1900 a 08:56'
          >>> datetime.today().year
          2015
          >>> year = datetime.today().year
          >>> year
          2015
          

          Parcontre il n'a pas l'air d'aimer le mot clé "replace"

          Traceback (most recent call last)
          File "views.py", line 18, in last_logon
          date.replace(year=datetime.today().year)
          TypeError: replace() takes no keyword arguments



          • Partager sur Facebook
          • Partager sur Twitter
            2 septembre 2015 à 17:08:10

            Est-ce que tu as importé le module datetime comme Dan?

            Edit: Ce n'est pas qu'il n'aime pas la méthode (et non le mot-clé) replace, c'est simplement que Dan c'est légèrement trompé dans son code:

            date.replace("1900", str(datetime.today().year))



            -
            Edité par Olygrim 2 septembre 2015 à 17:13:27

            • Partager sur Facebook
            • Partager sur Twitter
            Précepte: Le mieux est l'ennemi du bien
              2 septembre 2015 à 17:22:51

              J'ai trouvé la solution

              Apparemment il fallait faire passer le replace avant le strftime ( merci google) 

              date = datetime.strptime(' '.join(item[4:8]), "%a %b %d %H:%M").replace(year=datetime.today().year).strftime('%d/%m/%Y a %H:%M')

              Je ne sais si on peut plus optimiser que ça. Mais je suis preneur.

              Merci Dan737 et Olygrim pour votre aide

              • Partager sur Facebook
              • Partager sur Twitter
                2 septembre 2015 à 17:34:25

                Olygrim a écrit:

                Est-ce que tu as importé le module datetime comme Dan?

                Edit: Ce n'est pas qu'il n'aime pas la méthode (et non le mot-clé) replace, c'est simplement que Dan c'est légèrement trompé dans son code:

                date.replace("1900", str(datetime.today().year))



                -
                Edité par Olygrim il y a 18 minutes

                Oui Olygrim j'ai bien importer le module datetime.

                Et effectivement il aime bien le replace :D

                Merci encore

                • Partager sur Facebook
                • Partager sur Twitter
                  2 septembre 2015 à 17:51:38

                  Au temps pour moi, Dan ne s'est pas trompé. Ici replace est une méthode de datetime ;)
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Précepte: Le mieux est l'ennemi du bien

                  Comment convertir la date d'un timestamp linux

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown