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

Posted

技术标签:

【中文标题】在 Python 中以 YYYY-MM-DD 获取今天的日期?【英文标题】:Getting today's date in YYYY-MM-DD in Python? 【发布时间】:2015-12-06 01:50:16 【问题描述】:

我正在使用:

str(datetime.datetime.today()).split()[0]

YYYY-MM-DD 格式返回今天的日期。

有没有更简单的方法来实现这一点?

【问题讨论】:

“粗”是什么意思? 也许是这个? \n now = datetime.datetime.now() \n str(now.strftime("Y-%m-%d") @Gombat 我的意思是根据我的经验,通常有一种内置的方式可以在 Python 中获得我们想要的东西,而无需拆分、索引、连接、连接等。 pandas and pendulum alternatives are available for those working with these libraries. 【参考方案1】:

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

import time
today = time.strftime("%Y-%m-%d")
# 2022-01-28

【讨论】:

【参考方案2】:

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

from datetime import datetime
import pytz

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

【讨论】:

【参考方案3】:

我总是为此使用isoformat() 方法。

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

请注意,如果您还需要标准 ISO 8601 格式的时间,这也适用于 datetime objects。

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

【讨论】:

【参考方案4】:
from datetime import datetime

date = datetime.today().date()

print(date)

【讨论】:

虽然此代码可以解决问题,including an explanation 说明如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。【参考方案5】:

你可以使用strftime:

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

此外,对于还在末尾寻找零填充小时、分钟和秒的任何人:(Gabriel Staples 评论)

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

【讨论】:

“%x”也很有可能会起作用……但这取决于语言环境 time.strftime("%Y-%m-%d") 怎么样? UTC 日期:datetime.utcnow().strftime('%Y-%m-%d') 值得注意的是 datedatetime 都有这个功能 这里有一个有用的列表来获得 OP 所需结果的变化:strftime.org【参考方案6】:

您在使用 Pandas 吗?

您可以使用pandas 库中的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)

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

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

另一个日期解析器库:Pendulum

这个不错,我保证。

如果您正在使用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'

这个答案的理由

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

如果您还没有使用 pandas 或 pendulum,我绝对不建议仅仅为了运行此代码而安装它们!这些库很重,并且在引擎盖下有很多管道。如果可以使用标准库,那就不值得了。

【讨论】:

好消息 Pandas 也有! 这个真的很棒,特别是当一个人在处理熊猫时 pd.to_datetime(day).date() 如果您正在使用 pandas 并且不想转换为 str,则很有用。谢谢! @cs95 主要问题是“如何获取 YYYY-MM-DD 格式”。不是“如何获取当前日期”。你的回答无关紧要。您可以尝试通过剥离“YYYY-MM-DD”之后的所有内容来回答问题来扩展它。 对于“钟摆”使用:now = pendulum.now(), now = now.format('YYYY-MM-DD')【参考方案7】:

从日期获取天数在python中

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

order['day'] = order['Order_Date'].apply(lambda x: x.day)

【讨论】:

【参考方案8】:

这行得通:

from datetime import date
today =date.today()

本次输出:2020-08-29

补充:

this_year = date.today().year
this_month = date.today().month
this_day = date.today().day
print(today)
print(this_year)
print(this_month)
print(this_day)

【讨论】:

尽量不要使用python内置的函数和变量作为局部变量(例如:今天、年、日)。此外,用户的请求是以 YYYY-MM-DD 格式获取今天的日期。你能试着回答一下这个问题吗(格式YYYY-MM-DD)。【参考方案9】:

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

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

参考:'https://strftime.org/

您可以查看参考来制作您想要的任何东西 对你来说 YYYY-MM-DD 只需将我的代码更改为:

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

【讨论】:

【参考方案10】:

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

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

【讨论】:

是否可以将分隔符改为/ @StevenVascellaro 应该是date.today().strftime('%Y/%m/%d') @StevenVascellaro 坏主意。读者通常假定分隔符 . 到 'D.M.Y',分隔符 /M/D/Y 和分隔符 -Y-M-D。虽然不是每个人都遵循这些准则,但只要不是每个人都切换到Y-M-D,这将有助于阅读国际日期。 @glglgl 我正在使用一个假定美国日期格式 m/d/y 的 api。我已经在我的应用程序中更改了顺序。 @glglgl 是的,我正在使用 m/d/y【参考方案11】:

如果您喜欢记住有趣的代码,那么日期时间就很可爱了。你不喜欢简单吗?

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

这个模块足够聪明,可以理解你的意思意思

只需pip install arrow

附录:对于那些对此答案感到厌烦的人,我只想说,箭头代表了在 Python 中处理日期的一种替代方法。这主要是我的意思。

【讨论】:

对于这样一个简单的任务,为什么要使用另一个库,而内置库可以做到这一点。当然,如果用户需要其他大量与 time, date 相关的函数,引入一个新库是有意义的。 您在阅读第二行代码时让我发笑。这比print(date.today()) >> “2018-12-16”好多少??大声笑并轻松获得 t.year,t.month,t.day+1 >> (2018, 12, 17) 的 int 值,其中 t = date.today() 以及人们不必调用绿色箭头来告诉他们时间的事实。天哪,代码太多了,记不住…… @Puddle:好笑。 @kmonsoor import datetimeimport arrow 有何不同?肯定是内置的,但是如果arrow提供了更方便的格式,那为什么不使用呢? @information_interchange 您已经回答了您的问题。内置 vs 不内置。如果有人需要这些额外的东西,当然,为什么不arrow?但是,对于许多简单的项目,这只是不必要的。此外,在许多公司内部项目中,人们需要获得批准才能包含新库。【参考方案12】:

你可以使用,

>>> from datetime import date
>>> date.today().__str__()
'2019-10-05'

【讨论】:

可能str(date.today()) 更好 这是这个答案的副本***.com/a/47984538【参考方案13】:

我更喜欢这个,因为这很简单,但可能在某种程度上效率低下和错误。如果你想要一个强烈防错程序,你必须检查shell命令的退出代码。

os.system('date +%Y-%m-%d')

【讨论】:

这应该仅用于检查系统日期命令将返回的内容,而不是实际格式化日期。除了退出代码检查之外,还有几个原因。 1. 不便携。 Windows 上的 date 命令设置日期 2. 效率低下。它必须创建一个完整的 shell,然后它必须解析、查找和执行命令,返回输出,然后销毁那个 shell 3。这简直是 unpythonic - 它表明你不知道知名的基础库,并且也可能会误导看到该代码的语言新手

以上是关于在 Python 中以 YYYY-MM-DD 获取今天的日期?的主要内容,如果未能解决你的问题,请参考以下文章

在 Pig 中以 yyyy-mm-dd 格式获取今天的日期

如何在 Java 中以 YYYY-MM-DD HH:MI:Sec.Millisecond 格式获取当前时间?

在 SQL 中以 YYYY-MM-DD 格式显示日期

Python - 以 YYYY-MM-DD 格式获取昨天的日期作为字符串

如何在 Python 3 中以纳秒为单位获取时间戳? [复制]

在 Python 3.6.9 中以纳秒为单位获取 Epoch 时间戳