从日期时间获取星期几名称

107
如何从Python的datetime对象中获取星期几的名称(例如:星期一,星期二,星期三,星期四,星期五,星期六和星期日)?
所以,例如,datetime(2019, 9, 6, 11, 33, 0)应该返回"星期五"。
6个回答

244

18
使用 %a 表示缩写的名称。 - Adversus

51
>>> from datetime import datetime as date
>>> date.today().strftime("%A")
'Monday'

3

如果您不介意使用另一个包,您也可以使用pandas来实现您想要的功能:

>>> my_date = datetime.datetime(2019, 9, 6, 11, 33, 0)
>>> pd.to_datetime(my_date).day_name()
'Friday'

使用另一个包来完成如此简单的任务似乎不是一个好主意,原因是day_name方法比strftime("%A")更容易理解(你可能会忘记获取星期几名称的正确指令格式)。

希望有一天这个功能能够直接添加到datetime包中(例如:my_date.day_name())。


2
您可以使用以下方式,而不是使用 datetime : import time :
import time
WEEKDAYS = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

now = time.localtime()
weekday_index = now.tm_wday
print(WEEKDAYS[weekday_index])

1

您可以使用 f-string 与 格式化代码,例如 %A%a

> import datetime

# Provide a date object:
> d = datetime.date.today()
> d
datetime.date(2023, 2, 3)

# Provide a datetime object:
> dt = datetime.datetime.now()
> dt
datetime.datetime(2023, 2, 3, 17, 48, 7, 415010)

# Full weekday name:
> f'{d:%A}'
'Friday'
> f'{dt:%A}'
'Friday'

# Abbreviated weekday name:
> f'{d:%a}'
'Fri'
> f'{dt:%a}'
'Fri'

请注意,输出的字符串是与地区相关的。如果需要一个与地区无关的比较,甚至只是一个更快的比较,请考虑使用date.weekday()datetime.weekday()

1
import datetime
numdays = 7
base = datetime.date.today()
date_list = [base + datetime.timedelta(days=x) for x in range(numdays)]
date_list_with_dayname = ["%s, %s" % ((base + datetime.timedelta(days=x)).strftime("%A"),  base + datetime.timedelta(days=x)) for x in range(numdays)]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接