在Python中用YYYY-MM-DD获取今天的日期?

有比以下更好的方法以YYYY-MM-DD格式返回今天的日期吗?

str(datetime.datetime.today()).split()[0]
1144105 次浏览

使用strftime

>>> from datetime import datetime>>> datetime.today().strftime('%Y-%m-%d')'2021-01-26'

还要在末尾包含一个填充零的Hour:Minute:Second

>>> datetime.today().strftime('%Y-%m-%d %H:%M:%S')'2021-01-26 16:50:03'

获取UTC日期和时间:

>>> datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S')'2021-01-27 00:50:03'

如果你喜欢记住有趣的代码,约会时间是很可爱的。你不喜欢简单吗?

>>> import arrow>>> arrow.now().format('YYYY-MM-DD')'2017-02-17'

这个模块足够聪明,可以理解你的平均

只是做pip install arrow

附录:为了回答那些对这个答案感到不安的人,让我说箭头代表了Python中处理日期的替代方法之一。这主要是我想建议的。

您可以使用datetime.date.today()并将结果datetime.date对象转换为字符串:

from datetime import datetoday = str(date.today())print(today)   # '2017-12-26'

我总是使用isoformat()方法。

from datetime import datetoday = date.today().isoformat()print(today)  # '2018-12-05'

请注意,如果您需要标准ISO8601格式的时间,这也适用于#0对象

from datetime import datetimenow = datetime.today().isoformat()print(now)  # '2018-12-05T11:15:55.126382'

你和熊猫一起工作吗?

您可以使用熊猫库中的pd.to_datetime。这里有各种选项,具体取决于您想要返回的内容。

import pandas as pd
pd.to_datetime('today')  # pd.to_datetime('now')# Timestamp('2019-03-27 00:00:10.958567')

作为pythondatetime对象,

pd.to_datetime('today').to_pydatetime()# datetime.datetime(2019, 4, 18, 3, 50, 42, 587629)

作为格式化的日期字符串,

pd.to_datetime('today').isoformat()# '2019-04-18T04:03:32.493337'
# Or, `strftime` for custom formats.pd.to_datetime('today').strftime('%Y-%m-%d')# '2019-03-27'

要从时间戳中获取日期,请调用Timestamp.date

pd.to_datetime('today').date()# datetime.date(2019, 3, 27)

除了to_datetime之外,您还可以使用以下命令直接实例化Timestamp对象,

pd.Timestamp('today')  # pd.Timestamp('now')# Timestamp('2019-04-18 03:43:33.233093')
pd.Timestamp('today').to_pydatetime()# datetime.datetime(2019, 4, 18, 3, 53, 46, 220068)

如果您想让您的时间戳时区感知,请将时区传递给tz参数。

pd.Timestamp('now', tz='America/Los_Angeles')# Timestamp('2019-04-18 03:59:02.647819-0700', tz='America/Los_Angeles')

另一个日期解析器库:Pendulum

这个很好,我保证。

如果您正在使用钟摆,则有一些有趣的选择。您可以使用now()获取当前时间戳或使用today()获取今天的日期。

import pendulum
pendulum.now()# DateTime(2019, 3, 27, 0, 2, 41, 452264, tzinfo=Timezone('America/Los_Angeles'))
pendulum.today()# DateTime(2019, 3, 27, 0, 0, 0, tzinfo=Timezone('America/Los_Angeles'))

此外,您还可以直接获取tomorrow()yesterday()的日期,而无需执行任何额外的timedelta算术。

pendulum.yesterday()# DateTime(2019, 3, 26, 0, 0, 0, tzinfo=Timezone('America/Los_Angeles'))
pendulum.tomorrow()# DateTime(2019, 3, 28, 0, 0, 0, tzinfo=Timezone('America/Los_Angeles'))

有各种可用的格式化选项。

pendulum.now().to_date_string()# '2019-03-27'
pendulum.now().to_formatted_date_string()# 'Mar 27, 2019'
pendulum.now().to_day_datetime_string()# 'Wed, Mar 27, 2019 12:04 AM'

这个答案的理由

很多熊猫用户偶然发现了这个问题,因为他们认为这是一个Python问题而不是熊猫问题。这个答案旨在对已经在使用这些库的人有用,并且有兴趣知道有一些方法可以在库本身的范围内实现这些结果。

如果你还没有使用熊猫或钟摆,我绝对不建议仅仅为了运行这段代码而安装它们!这些库很重,并且在引擎盖下有很多管道。当你可以使用标准库来代替时,不值得麻烦。

答案很晚,但您可以简单地使用:

import timetoday = time.strftime("%Y-%m-%d")# 2022-11-26

我的代码有点复杂,但我经常使用它

strftime("%y_%m_%d", localtime(time.time()))

参考:https://strftime.org/

您可以查看引用以制作任何您想要的内容为了你什么YYYY-MM-DD只需将我的代码更改为:

strftime("%Y-%m-%d", localtime(time.time()))

这工作:

from datetime import datetoday =date.today()

当前时间输出:2020-08-29

补充:

this_year = date.today().yearthis_month = date.today().monththis_day = date.today().dayprint(today)print(this_year)print(this_month)print(this_day)

从date中获取天数在python中

例如:19-12-2020(dd-mm-yyy)order_date我们需要19作为输出

order['day'] = order['Order_Date'].apply(lambda x: x.day)
from datetime import datetime
date = datetime.today().date()
print(date)

如果您需要例如太平洋标准时间(PST),您可以这样做

from datetime import datetimeimport pytz
tz = pytz.timezone('US/Pacific')datetime.now(tz).strftime('%Y-%m-%d %H:%M:%S')# '2021-09-02 10:21:41'

使用f字符串,它们通常是任何文本变量组合的最佳选择:

from datetime import dateprint(f'{date.today():%Y-%m-%d}')

取自Python f字符串格式不适用于strftime内联,其中也有官方链接。