如何将日期时间转换为日期(在Python中)?


644

如何转换datetime.datetime对象(例如,datetime.datetime.now())datetime.datePython中的对象?


16
如果只需要此功能datetime.datetime.now(),请注意有一种方法datetime.date.today()
Thierry J.

如果您已经导入了日期时间,例如,from datetime import datetime您可以添加日期from datetime import datetime, date
乔什(Josh)

Answers:


982

使用date()方法:

datetime.datetime.now().date()

14
要获得UTC可能非常有帮助-> datetime.datetime.utcnow()并相应地datetime.datetime.utcnow().date()
Nick Brady

2
感谢@SeanColombo,特定时区的当前日期应该为datetime.datetime.now(pytz.timezone('US/Pacific')).date()
Monica对于CEO,


62

您使用的datetime.datetime.date()方法:

datetime.datetime.now().date()

显然,以上表达式可以(并且应该恕我直言:)写成:

datetime.date.today()

14
不要混淆那个家伙。
fiatjaf 2012年

1
公平地说,这个答案(使用.today())对于所陈述的示例问题而言是最Python的。
丹妮德

2
如果今天使用,比较日期时要小心。 today()也有一个小时的组成部分。所以,如果你这样做:losdat = datetime.datetime.strptime(losdatstr, '%d%m%Y')然后if losdat < datetime.datetime.today():它会永远是正确的,因为losdat将有午夜的时间部分将的时间戳之前落下today()
丹尼斯Decoene

3
@DennisDecoene:当想要一个对象时,为什么要使用datetime.datetime.today()而不是?datetime.date.today()datetime.date
tzot

@tzot是的,这也是我想指出的,但不清楚。
丹尼斯·德肯

45

您可以使用日期时间对象的date()方法将datetime对象转换为日期,如下所示:

<datetime_object>.date()

3
import time
import datetime

# use mktime to step by one day
# end - the last day, numdays - count of days to step back
def gen_dates_list(end, numdays):
  start = end - datetime.timedelta(days=numdays+1)
  end   = int(time.mktime(end.timetuple()))
  start = int(time.mktime(start.timetuple()))
  # 86400 s = 1 day
  return xrange(start, end, 86400)

# if you need reverse the list of dates
for dt in reversed(gen_dates_list(datetime.datetime.today(), 100)):
    print datetime.datetime.fromtimestamp(dt).date()

2
您是要在此处发布此答案吗?在我看来,您的答案是针对另一个问题的。
所有工人都

2

您可以输入以下代码形式((今天的日期和日期和时间的名称)datetime.datetime.now().strftime('%y-%m-%d %a %H:%M:%S')

'19 -09-09 Mon 17:37:56'

并输入以下代码(用于今天):“ datetime.date.today().strftime('%y-%m-%d') 19-09-10”

对于对象: datetime.datetime.now().date() datetime.datetime.today().date() datetime.datetime.utcnow().date() datetime.datetime.today().time() datetime.datetime.utcnow().date() datetime.datetime.utcnow().time()


OP想要获取返回的datetime.date对象,而不是字符串strftime(参考:docs.python.org/3/library/datetime.html#datetime.date.strftime)。
Grzegorz Skibinski
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.