ChatGPT解决这个技术问题 Extra ChatGPT

如何将日期时间转换为日期?

如何在 Python 中将 datetime.datetime 对象(例如,datetime.datetime.now()) 的返回值转换为 datetime.date 对象?

如果您只需要 datetime.datetime.now(),请注意有一个方法 datetime.date.today()
如果您已经导入日期时间,例如 from datetime import datetime,您可以添加日期 from datetime import datetime, date

F
Flimm

使用 date() 方法:

datetime.datetime.now().date()

进入 UTC 会很有帮助 --> datetime.datetime.utcnow() 和相应的 datetime.datetime.utcnow().date()
谢谢@SeanColombo,特定时区的当前日期应该是 datetime.datetime.now(pytz.timezone('US/Pacific')).date()
datetime.datetime.utcnow() 已弃用,请参阅 docs.python.org/3/library/datetime.html#datetime.datetime 替换为 datetime.now(timezone.utc)。 OP 实际上是在日期之后,所以这没有实际意义。
给定 from datetime import datetime, date, timezone 和一个使用具有非零偏移量的时区,则 datetime.now(timezone.utc).date() 可以 不同于 datetime.now().date()(后者也可用作 date.today())。
C
Community

从文档中:

datetime.datetime.date() 返回具有相同年月日的日期对象。


t
tzot

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

datetime.datetime.now().date()

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

datetime.date.today()

公平地说,这个答案(使用 .today())对于所述示例问题来说是最 Pythonic 的。
如果您使用今天,比较日期时要小心。 today() 也有一个 hour 组件。因此,如果您这样做:losdat = datetime.datetime.strptime(losdatstr, '%d%m%Y')然后 if losdat < datetime.datetime.today(): 将始终为真,因为 losdat 将有一个午夜的时间分量,该时间分量将在 today() 的时间戳之前
@DennisDecoene:当一个人想要一个 datetime.date 对象时,为什么要使用 datetime.datetime.today() 而不是 datetime.date.today()
@tzot 是的,这也是我想指出的,但不清楚。
F
Furbeenator

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

<datetime_object>.date()

T
Tms91

答案已更新至 Python 3.7 及更多

以下是如何转换日期和时间对象

(又名 datetime.datetime 对象,存储在 models.DateTimeField django model field 中的对象)

放入日期对象(又名 datetime.date 对象):

from datetime import datetime

#your date-and-time object
# let's supposed it is defined as
datetime_element = datetime(2020, 7, 10, 12, 56, 54, 324893)

# where
# datetime_element = datetime(year, month, day, hour, minute, second, milliseconds)

# WHAT YOU WANT: your date-only object
date_element = datetime_element.date()

为了清楚起见,如果您打印这些元素,这里是输出:

print(datetime_element)

2020-07-10 12:56:54.324893

print(date_element)

2020-07-10


k
kamran26

您可以为(今天的日期和当天的名称和小时)输入此代码表单:datetime.datetime.now().strftime('%y-%m-%d %a %H:%M:%S')

'19-09-09 星期一 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)。
S
Serenity
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()

您的意思是在此处发布此答案吗?在我看来,您的答案是针对另一个问题的。
W
Wei Chun Chang

我使用 data.strftime('%y-%m-%d') 和 lambda 将列传输到日期


M
Manjula Devi
Solved: AttributeError: 'Series' object has no attribute 'date'

您可以使用如下,

df["date"] = pd.to_datetime(df["date"]).dt.date

在上面的代码中,日期包含日期和时间(2020-09-21 22:32:00),使用上面的代码我们只能得到日期(2020-09-21)