2010-10-09 3 views
0
from datetime import date 
from datetime import timedelta 

a = date.today() - timedelta(1) 
# a above is a tuple and not datetime 
# Since I am a C programmer, I would expect python to cast back to datetime 
# but it is casting it to a tuple 

Pouvez-vous me dire pourquoi cela se passe? et aussi comment je peux voir que l'opération ci-dessus aboutit à une date-heure?Pourquoi cette opération python retourne-t-elle un tuple?

Je suis un débutant python, désolé si c'est une chose banale, mais je suis coincé ici pour un moment!

Merci

+0

faites un type d'impression (a). Ça ne devrait pas être une chaîne. – Tudorizer

+0

Je ne vois pas comment vous obtenez un tuple de cela. L'exécution de ce code génère un objet datetime.date dans a. –

+0

Je reçois une chaîne. Je suis sérieux! >>> a = date.today() - timedelta (1) >>> imprimer a 2010-10-07 – arbithero

Répondre

1

utilisation type fonction intégrée:

>>> from datetime import date 
>>> from datetime import timedelta 
>>> 
>>> a = date.today() - timedelta(1) 
>>> a 
datetime.date(2010, 10, 8) 
>>> type(a) 
<type 'datetime.date'> 
>>> 
5

Peut-être le rééd d'un vous embrouille:

>>> a 
datetime.date(2010, 10, 8) 

ce n'est pas un tuple, il est ce que datetime utilise comme rééd(). Imprimer pour obtenir sa chaîne() représentation:

>>> print a 
2010-10-08 

Soit str() vous-même explicitement ou utiliser a.strftime() pour Possédez-vous la mise en forme.

3

Après avoir regardé votre image: Python code screenshot

Je pense que vous assumez c'est une chaîne, car print affiche une chaîne - mais c'est exactement ce que son travail est! L'objet est un datetime. Vous ne pouvez pas le convertir en un date en passant au constructeur date(), que ce soit - au lieu vous devez appeler a.date()

+0

Merci! Il y avait un autre bug dans mon code. Je l'ai corrigé – arbithero

+0

Je n'ai aucune idée d'où vient le -2. Quelqu'un veut-il expliquer ce qui ne va pas avec cette réponse? – EMP

0

Votre déclaration

date.today() - timedelta(1) 

retourne un objet date.

Cet objet ont deux représentations de chaîne:

  • Le format lisible la plus courante est en appelant la fonction str() (même appelé à l'aide d'impression), dans ce cas str(a) vous donne '2010-10-08'

  • Une seconde la représentation, la nature de l'objet, est en utilisant la fonction repr(). Dans ce cas, repr(a) renvoie 'datetime.date(2010, 10, 8)'.

Questions connexes