9
votes

calculer le lendemain d'une chaîne formatée "yyyymmdd"

Comment puis-je calculer le lendemain d'une chaîne comme 20110531 dans le même format yyyymmdd? Dans ce cas particulier, j'aime avoir 20110601 comme résultat. Calculer "demain" ou le lendemain de manière statique n'est pas si difficile, comme celui-ci: xxx

mais comment puis-je utiliser une chaîne comme dt = "20110531" à Obtenez le même résultat que ci-dessus?


0 commentaires

3 Réponses :


4
votes
>>> from datetime import datetime
>>> print datetime.strptime('20110531', '%Y%m%d')
2011-05-31 00:00:00
And then do math on that date object as you show in your question.The datetime library docs.

3 commentaires

Merci beaucoup, c'est juste la chose que je cherchais. Je me sens si stupide mais maintenant. À votre santé!!


Je suis désolé de dire que cela ne fonctionne pas dans V2.4, où je dois en réalité exécuter ce script. Il est écrit: attributError: type objet 'DateTime.DateTime' n'a aucun attribut 'STRPTIME' . Donc je suis de retour à la base à nouveau.


Oui, la réponse d'AJ fonctionne, uniquement si je mets explicitement trois attributs. Comment utiliser t.date () à la place? À votre santé!!



3
votes

Vous êtes la plupart de la route! Avec la fonction StrfTime qui convertit une date à une chaîne formatée, il existe également une fonction STRPTIME qui convertit l'inverse.

Pour résoudre votre problème, vous pouvez simplement remplacer date.today () avec STRPTIME (vous-êtes, "% y% m% d ') . .

ed : et bien sûr, vous devrez également ajouter STRATTIME à la fin de votre à partir de DateTime Import ligne.


2 commentaires

Je vois que cela fonctionne simplement bien sans ajouter structime . J'ai eu un coup d'oeil dans le Strptime () mais je n'ai pas compris l'utilisation correctement. Merci pour le commentaire. À votre santé!!


Je vois votre point maintenant - c'est un problème v2.6 contre v2.4. En V2.6, aucun besoin d'importer plus fort. Dans 2.4 IT RAPPORT ERREUR: IMPORTERROR: Impossible d'importer le nom STRPTIME mais DateTime.stryptime () ne fonctionne pas non plus.



11
votes

Voici un exemple de comment le faire:

import time
from datetime import date, timedelta

t=time.strptime('20110531','%Y%m%d')
newdate=date(t.tm_year,t.tm_mon,t.tm_mday)+timedelta(1)
print newdate.strftime('%Y%m%d')


6 commentaires

Je pense que vous pouvez simplement dire t.date () au lieu de tirer explicitement les trois attributs. Mais, +1 pour remarquer que le reste d'entre nous lui donnait DateTime d'objets quand il aurait peut-être voulu une date !


Donc, quel est l'avantage d'utiliser la date sur DateTime ? Je vais loin que je puisse voir, ils font la même chose en prenant le même temps. À votre santé!!


Vous avez utilisé date dans votre question initiale, alors je l'ai utilisé dans ma réponse. La question de savoir laquelle utiliser ne dépend que de précision: faites-vous besoin pour connaître le temps, ou juste la date?


Obtenez-le maintenant, date est tout simplement bien dans ce cas. Merci pour le script, c'est la chose qui fonctionne avec v2.4 jusqu'à présent. À votre santé!!


@Brandonrhodes no t.date () au moins en python 2.7.


Vous voudrez peut-être vérifier si votre Python a été compilé avec tous les modules officiels disponibles? La documentation Python affirme que la méthode de type () est disponible depuis le module DateTime a été ajouté à Python 2.3: docs.python.org/2/library/dateTime.html#dateTetime.dateTime .da te