2010-01-24 6 views
3

Je travaille sur une application de type journal en Python. L'application permet essentiellement à l'utilisateur d'écrire des entrées dans le journal et ajoute un horodatage pour l'interrogation ultérieure du journal. À l'heure actuelle, j'utilise la fonction time.ctime() pour générer des horodatages visuellement conviviaux. Les entrées de journal regardent donc comme:Facile à utiliser les horodatages en Python

Thu Jan 21 19:59:47 2010 Did something 
Thu Jan 21 20:01:07 2010 Did something else 

Maintenant, je voudrais être en mesure d'utiliser ces horodatées pour faire quelques recherches/interrogation. Je dois pouvoir rechercher, par exemple, pour "2010", ou "février 2010", ou "23 février 2010".

Mes questions sont les suivantes:

1) Qu'est-ce que le module temps (s) dois-je utiliser: time vs datetime?

2) Quelle serait la manière appropriée de créer et d'utiliser les objets d'horodatage?

Merci beaucoup!

Répondre

7

Option 1: Ne rien changer. Utilisez time.strptime pour analyser vos horodatages.

Option 2: Passez à datetime. Vous pouvez formater les horodatages de la même manière et utiliser datetime.strptime pour les analyser.

Peu importe, puisque le code sera similaire. La recherche impliquera des mois, des jours ou des années correspondants. Utilisez time tuples pour cela. Ou datetime.datetime objets. Ou, la recherche impliquera de comparer des plages de temps; utilisez time en secondes pour cela. Ou utilisez datetime objets. Ils travailleront tous les deux et - pour cela - ils seront similaires en complexité.

Les calculs des dates de mise en œuvre (90 jours dans le futur, 3 mois dans le passé, etc.) constituent la combinaison forte de datetime.

En général, vous serez souvent plus heureux avec datetime car il fait plus et ne nécessite pas de basculer entre le double temps simple et le temps de ligne.

+0

Merci pour votre réponse. Je vais mettre du temps à parcourir la documentation datetime. – Morlock

9

Vous voudrez peut-être envisager de passer à ISO 8601. Aidera avec le tri par exemple, ou le transfert de données entre différents systèmes.

+0

totalement d'accord. tellement plus lisible et provoque également moins de tracas lors de l'utilisation de différents outils. – rytis

+0

Je vais utiliser ISO 8601 dans le fichier journal, et merci d'un journal pour la suggestion! Cependant, la question est vraiment de savoir quel module python je devrais utiliser pour gérer les dates et les heures. Si vous avez un moyen de mettre en œuvre ISO 8601 avec un module python de la bibliothèque standard, je serais heureux d'en entendre parler! A bientôt – Morlock

+1

Voici une question qui fait le contraire, en analysant ISO 8601 en Python en utilisant le module datetime: http://stackoverflow.com/questions/969285/how-do-i-translate-a-iso-8601-datetime-string- into-a-python-datetime-object - notez le commentaire sur les méthodes de datetime.datetime au lieu du module datetime lui-même. Si vous êtes chanceux, vous trouverez une fonction strftime() qui accepte la même syntaxe de format (ou très similaire). Il me semble me souvenir que j'ai déjà fait quelque chose comme ça, et que la seule chose que je devais faire était de virer quelques fractions de seconde (comme cela était nécessaire pour ma demande à ce moment-là). –

Questions connexes