用Python在YYYY-MM-DD中获取今天的约会对象?

Pyd*_*man 238 python datetime python-2.7 python-datetime

我正在使用:

str(datetime.datetime.today()).split()[0]
Run Code Online (Sandbox Code Playgroud)

YYYY-MM-DD的形式返回今天的日期.

是否有一种不那么粗暴的方法来实现这一目标

die*_*us9 431

你可以使用strftime:

from datetime import datetime

datetime.today().strftime('%Y-%m-%d')
Run Code Online (Sandbox Code Playgroud)

  • 对于任何人也在最后寻找零填充小时,分钟和秒:`datetime.datetime.today().strftime('%Y-%m-%d-%H:%M:%S') ` (11认同)
  • 仅仅 `time.strftime("%Y-%m-%d")` 怎么样? (6认同)
  • 是的,但是使用strftime是最容易的. (4认同)
  • 对于 UTC 日期:`datetime.utcnow().strftime('%Y-%m-%d')` (3认同)
  • 这里有一个有用的列表,可以帮助您获得不同的 OP 所需结果:https://strftime.org/ (3认同)
  • 像`str(datetime.datetime.today()。year)+“-” + str(datetime.datetime.today()。month)+“-” + str(datetime.datetime.today()。day )`工作?这是一个愚蠢的问题,因为它输出的单位数字是月/日。:P (2认同)

kmo*_*oor 86

甚至比接受的答案更简单; 适用于Python 2和3.

from datetime import date
today = str(date.today())
print(today)   # '2017-12-26'
Run Code Online (Sandbox Code Playgroud)

  • @StevenVascellaro它将是`date.today().strftime('%Y /%m /%d')` (3认同)
  • 是否可以将分隔符更改为`/`? (2认同)
  • @StevenVascellaro不好的主意。读取器通常将分隔符“。”设置为“ DMY”,将分隔符“ /”设置为“ M / D / Y”,将分隔符“-”设置为“ YMD”。尽管不是每个人都遵循这些准则,但是只要不是每个人都改用“ YMD”,它就可以帮助国际阅读日期。 (2认同)

Bil*_*ell 35

如果你喜欢记住有趣的代码,日期时间是可爱的.你不喜欢简单吗?

>>> import arrow
>>> arrow.now().format('YYYY-MM-DD')
'2017-02-17'
Run Code Online (Sandbox Code Playgroud)

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

做吧pip install arrow.

  • 对于像这样的简单任务,为什么在内置库可以简单地使用另一个库时.当然,如果用户需要其他大量的{时间,日期}相关函数,那么引入新库是有意义的. (8认同)
  • 你在阅读第二行代码时让我发笑。这比`print(date.today())` >> "2018-12-16" 好在哪里?大声笑并轻松获得 int 值 `t.year,t.month,t.day+1` >> (2018, 12, 17) where `t = date.today()` 以及人们不必这样做的事实打电话给绿色箭头告诉他们时间。哦,上帝,这是太多的代码要记住... (4认同)
  • @Puddle:搞笑。 (2认同)

小智 19

我总是使用这个isoformat()功能.

from datetime import date    
today = date.today().isoformat()
print(today) # '2018-12-05'
Run Code Online (Sandbox Code Playgroud)

请注意,如果您还需要标准格式的时间,这也适用于日期时间对象.

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


Ped*_*ito 18

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

import time
today = time.strftime("%Y-%m-%d")
# 2021-05-02
Run Code Online (Sandbox Code Playgroud)


小智 12

from datetime import datetime

date = datetime.today().date()

print(date)
Run Code Online (Sandbox Code Playgroud)

  • 虽然此代码可以解决问题,但[包括解释](//meta.stackexchange.com/q/114762) 如何以及为何解决问题确实有助于提高帖子的质量,并可能会带来更多结果赞成票。请记住,您是在为将来的读者回答问题,而不仅仅是现在提问的人。请[编辑]您的答案以添加解释并指出适用的限制和假设。 (4认同)

Nic*_*aro 9

如果您需要例如太平洋标准时间(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'
Run Code Online (Sandbox Code Playgroud)


que*_*o42 9

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

from datetime import date
print(f'{date.today():%Y-%m-%d}')
Run Code Online (Sandbox Code Playgroud)

取自Python f-string 格式,不适用于 strftime inline,它也有官方链接。


cs9*_*s95 6

其他答案建议使用python's datetime.datetime,但正如@Bill Bell所说,还有其他库提供了更简单的datetime接口,这些接口既可以作为服务,也可以作为更大的API生态系统的一部分。这里有两个这样的库使工作变得datetimes非常简单。

潘达斯

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

import pandas as pd

pd.to_datetime('today')  # pd.to_datetime('now')
# Timestamp('2019-03-27 00:00:10.958567')
Run Code Online (Sandbox Code Playgroud)

作为python datetime对象,

pd.to_datetime('today').to_pydatetime()
# datetime.datetime(2019, 4, 18, 3, 50, 42, 587629)
Run Code Online (Sandbox Code Playgroud)

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

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'
Run Code Online (Sandbox Code Playgroud)

要仅从时间戳记中获取日期,请致电Timestamp.date

pd.to_datetime('today').date()
# datetime.date(2019, 3, 27)
Run Code Online (Sandbox Code Playgroud)

除了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)
Run Code Online (Sandbox Code Playgroud)

如果要使您的时间戳记时区知道,请将时区传递给tz参数。

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

如果您使用摆锤,则有一些有趣的选择。您可以使用来获取当前时间戳记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'))
Run Code Online (Sandbox Code Playgroud)

此外,您也可以直接获取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'))
Run Code Online (Sandbox Code Playgroud)

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

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'
Run Code Online (Sandbox Code Playgroud)

  • 熊猫也有好消息! (2认同)