截断一个python datetime对象的经典方法是什么?

在这种特殊情况下,到今天为止。基本上就是将小时,分,秒,微秒设置为0。

我希望输出也是一个datetime对象,而不是字符串。


当前回答

你可以用

datetime.date.today()

它很轻,而且完全符合你的要求。

其他回答

我觉得这就是你要找的…

>>> import datetime
>>> dt = datetime.datetime.now()
>>> dt = dt.replace(hour=0, minute=0, second=0, microsecond=0) # Returns a copy
>>> dt
datetime.datetime(2011, 3, 29, 0, 0)

但如果你真的不关心时间方面的事情,那么你真的应该只传递日期对象……

>>> d_truncated = datetime.date(dt.year, dt.month, dt.day)
>>> d_truncated
datetime.date(2011, 3, 29)

6年后……我发现了这篇文章,我更喜欢numpy方法:

import numpy as np
dates_array = np.array(['2013-01-01', '2013-01-15', '2013-01-30']).astype('datetime64[ns]')
truncated_dates = dates_array.astype('datetime64[D]')

干杯

截断是什么意思?

您可以通过使用strftime()方法和使用适当的格式字符串来完全控制格式。

http://docs.python.org/library/datetime.html#strftime-strptime-behavior

如果你不关心时间,就用date而不是datetime。

>>> now = datetime.now()
>>> now.date()
datetime.date(2011, 3, 29)

你可以像这样更新datetime:

>>> now.replace(minute=0, hour=0, second=0, microsecond=0)
datetime.datetime(2011, 3, 29, 0, 0)

你可以使用datetime。Strftime提取日,月,年…

例子:

from datetime import datetime
d = datetime.today()

# Retrieves the day and the year
print d.strftime("%d-%Y")

输出(今天):

29-2011

如果你只是想检索日期,你可以使用day属性:

from datetime import datetime
d = datetime.today()

# Retrieves the day
print d.day

输出(今天):

29