2010-10-09 49 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)'

相关问题