9
votes

comment convertir la chaîne à datetime.timedelta ()?

Comment puis-je convertir ma chaîne de jour à un datetime.timedelta () code> en Python

J'ai ce code: p>

import datetime

date_select = '2011-12-1'
delta = datetime.timedelta(days=1)
target_date = date_select + delta
print target_date


1 commentaires

Quel est le problème avec le code affiché? Votre question ne correspond pas à l'exemple de code du tout. La question demande à faire un timedelta , mais le code crée un « DateTime`. Que demandez-vous?


3 Réponses :


0
votes

Vous utilisez strptime code> pour le faire.

from datetime import datetime

target_date = datetime.strptime(date_select, '%Y-%m-%d')


4 commentaires

AttributeError: type d'objet 'datetime.datetime' n'a pas d'attribut 'timedelta' ce que j'ai .. merci mélangeur


Je peux exécuter ce code très bien sur python2 et python3. Avez-vous plus de code?


@gadss, c'est parce que datetime dans son exemple (notez la différence de ligne d'importation) est l'objet / type et pas le module datetime . Cela peut être un peu déroutant si vous n'êtes pas habitué à utiliser ce module, mais l'objet / type et le module ont exactement le même nom.


@AdamWagner, avec "de datetime import datetime", a encore cette erreur. Avec ce journal, strptime ne peut pas traduire timedelta à chaîne.



11
votes

Vous ne convertirait pas date_select code> à timedelta ​​code>, au contraire, vous avez besoin d'un datetime code>, qui peut être ajouté à un code timedelta ​​code> pour produire une mise à jour datetime code>:

import datetime    # <- LOOK HERE, same as in your example

date_select = datetime.datetime.strptime('2011-12-1', '%Y-%m-%d')
delta = datetime.timedelta(days=1)
target_date = date_select + delta
print target_date


3 commentaires

merci pour la réponse Adam, mais il ne fonctionnait pas .. i eu cette erreur: AttributeError: type d'objet « datetime.datetime » n'a pas d'attribut « timedelta » avez-vous des idées?


@gadss, Désolé, c'est parce que j'ai importé timedelta de datetime. Vous pouvez utiliser votre ligne d'importation d'origine, et changer le strptime datetime.datetime.strptime (...) ou modifier votre ligne timedelta timedelta (...) (avis, pas datetime. ). L'exemple que j'ai donné devrait fonctionner bien.


quand j'imprimer le target_date cela sortira 2011-12-01 00:00:00 est-il possible que seul le 2011-12-01 sera retour à target_date ? Merci ...



0
votes
print target_date.date()

0 commentaires