Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从Weekday int获取日期名称_Python_Date_Datetime - Fatal编程技术网

Python 从Weekday int获取日期名称

Python 从Weekday int获取日期名称,python,date,datetime,Python,Date,Datetime,我有一个工作日整数(0,1,2…),我需要获取日期名称(“星期一”、“星期二”和…) 是否有内置的Python函数或实现方法 这是我编写的函数,它可以工作,但我希望从内置的datetime库中得到一些东西 def dayNameFromWeekday(weekday): if weekday == 0: return "Monday" if weekday == 1: return "Tuesday" if weekday == 2:

我有一个工作日整数(0,1,2…),我需要获取日期名称(“星期一”、“星期二”和…)

是否有内置的Python函数或实现方法

这是我编写的函数,它可以工作,但我希望从内置的datetime库中得到一些东西

def dayNameFromWeekday(weekday):
    if weekday == 0:
        return "Monday"
    if weekday == 1:
        return "Tuesday"
    if weekday == 2:
        return "Wednesday"
    if weekday == 3:
        return "Thursday"
    if weekday == 4:
        return "Friday"
    if weekday == 5:
        return "Saturday"
    if weekday == 6:
        return "Sunday"
这很简单:

week = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
week[weekday]

您可以使用一个列表,根据您的参数从中获取项目:

def dayNameFromWeekday(weekday):
    days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
    return days[weekday]
如果您需要函数在传入无效数字(例如“8”)时不会导致错误,则可以在返回该列表项之前检查该列表项是否存在:

def dayNameFromWeekday(weekday):
    days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
    return days[weekday] if 0 < weekday < len(days) else None

我不确定是否有一种内置在
datetime
中的方法可以做到这一点,但这仍然是一种非常有效的方法。

我一直在使用日历模块:

import calendar
calendar.day_name[0]
'Monday'

使用以下选项更具python风格:

或者,您可以使用常用的日名称缩写:

>>> list(calendar.day_abbr)
['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
然后根据您的意愿编制索引:

>>> calendar.day_name[1]
'Tuesday'
(如果星期一不是一周的第一天,请使用更改它)

使用日历模块具有位置感知的优势:

>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'de_DE')
'de_DE'
>>> list(calendar.day_name)
['Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag', 'Sonntag']

如果您只需要从datetime对象打印日期名称,您可以这样使用:

current_date = datetime.now
current_date.strftime('%A')  # will return "Wednesday"
current_date.strftime('%a')  # will return "Wed"
days=["sunday","monday"," Tuesday", "Wednesday" ,"Thursday", "Friday", "Saturday"]
def date(i):

    return days[i]
print (date(int(input("input index.  "))))

您可以创建自己的列表并将其与格式一起使用

import datetime

days_ES = ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"]

t = datetime.datetime.now()
f = t.strftime("{%w} %Y-%m-%d").format(*days_ES)

print(f)
印刷品:

Lunes 2018-03-12

如果您必须根据特定日期查找日期,那么您可以使用内置函数来实现

import calendar

month,day,year = 9,19,1995
ans =calendar.weekday(year,month,day)

print(calendar.day_name[ans])
日历。工作日(年、月、日)返回年(1970年–…)、月(1-12)、日(1-31)的一周中的哪一天(0是星期一)

calendar.day\u name一个数组,表示当前区域设置中一周中的几天


有关更多参考-

您可以使用如下索引编号:

current_date = datetime.now
current_date.strftime('%A')  # will return "Wednesday"
current_date.strftime('%a')  # will return "Wed"
days=["sunday","monday"," Tuesday", "Wednesday" ,"Thursday", "Friday", "Saturday"]
def date(i):

    return days[i]
print (date(int(input("input index.  "))))

如果您想使用datetime方法,转到文档始终是第一步。但根据我的经验,如果您想使用datetime方法,那么您需要开始创建datetime.datetime或datetime.date对象,这样您的工作日整数就需要更改为datetime对象。这比将日名硬编码到代码中要好
calendar
还可以与
locale
一起使用,因此如果您愿意,日期名称将自动调整。这不起作用-OP希望
6
的工作日返回
Sunday
,但返回
Saturday
@OrangeFlash81 thx!现在很容易,因为没有任何偏移:D@zondo谢谢,修复了这个问题。如果你这样做,并且周一得到0(零),它将返回None,这可能会导致异常。如果-1返回天数[工作日],否则无,以便能够返回
“周一”
。很好的解释。我不知道日历库,谢谢!这个图书馆需要更好的文献资料。我必须查看代码才能发现
calendar.day\u name
有一个
\uuuuu getitem\uuuuuuuuu
方法,该方法将一个包含代表一周的datetime对象的列表切片(
calendar.day\u name.\u days
)并返回一个格式化字符串,该字符串表示一天的名称或一个列表(如果传入一个切片)。这对于pandas非常有用-在分组后按天重新编制索引,以使日期按顺序排列:
data.groupby('day').size().reindex(calendar.day\u name).plot.bar()
-绘制数据的每周分布。(日期列包含工作日名称)