2010-10-09 92 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 

你能告訴我爲什麼會發生這種情況嗎?以及我如何看到上述操作導致日期時間?爲什麼這個python操作返回一個元組?

我是一個蟒蛇新手,對不起,如果這是一件小事,但我在這裏呆了一會兒!

感謝

+0

做打印類型(a)。它不應該是一個字符串。 – Tudorizer 2010-10-09 07:19:46

+0

我不明白你是如何得到一個元組。執行該代碼會在a中產生一個datetime.date對象。 – 2010-10-09 07:21:07

+0

我收到一個字符串。我是認真的! >>> a = date.today() - timedelta(1) >>> print a 2010-10-07 – arbithero 2010-10-09 07:21:55

回答

1

使用type內置功能:

>>> 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

也許一個的再版混淆你:

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

這是不是一個元組,這是什麼日期時間使用的再版()。打印它得到的字符串()表示:

>>> print a 
2010-10-08 

無論是STR()一個自己明示或使用a.strftime()做你自己的格式。

3

說完看着你的形象:Python code screenshot

我想你是假設它是一個字符串,因爲print輸出一個字符串 - 但是這正是它的工作是什麼!對象 a datetime。你不能將它傳遞給date()構造函數將其轉換爲date,要麼 - 而不是你應該叫a.date()

+0

謝謝!我的代碼中存在另一個錯誤。修正了它 – arbithero 2010-10-09 08:03:08

+0

我不知道-2從哪裏來。任何人都在意解釋這個答案有什麼問題? – EMP 2010-10-10 08:13:39

0

你的陳述

date.today() - timedelta(1) 

返回date對象。

這個對象有兩個字符串表示:

  • 最常見的可讀格式是通過調用str()功能(同樣稱爲使用打印),在這種情況下str(a)給你'2010-10-08'

  • 第二表示,對象性質,是通過使用repr()函數。在這種情況下,repr(a)返回'datetime.date(2010, 10, 8)'

相關問題