[英]Get Day name from Weekday int
我有一個工作日整數 (0,1,2...),我需要獲取日期名稱 ('Monday', 'Tuesday',...)。
是否有內置的 Python 函數或這樣做的方法?
這是我編寫的函數,它可以工作,但我想從內置的日期時間庫中獲取一些東西。
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"
使用日歷模塊更加 Pythonic:
>>> import calendar
>>> list(calendar.day_name)
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
或者,您可以使用常見的日期名稱縮寫:
>>> list(calendar.day_abbr)
['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
然后根據需要索引:
>>> calendar.day_name[1]
'Tuesday'
(如果星期一不是一周的第一天,請使用setfirstweekday更改它)
使用日歷模塊具有位置感知的優勢:
>>> 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"
我一直在使用日歷模塊:
import calendar
calendar.day_name[0]
'Monday'
這很容易:
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
這個函數可以像你期望的那樣使用:
>>> dayNameFromWeekday(6)
Sunday
>>> print(dayNameFromWeekday(7))
None
我不確定datetime
是否有一種方法可以做到這一點,但這仍然是一種非常有效的方法。
您可以創建自己的列表並將其與格式一起使用。
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])
calendar.weekday(year, month, day) - 返回年 (1970–…)、月 (1–12)、日 (1–31) 的星期幾(0 是星期一)。
calendar.day_name - 一個數組,表示當前語言環境中的星期幾
更多參考 - https://docs.python.org/2/library/calendar.html#calendar.weekday
您可以像這樣使用索引號:
days=["sunday","monday"," Tuesday", "Wednesday" ,"Thursday", "Friday", "Saturday"]
def date(i):
return days[i]
print (date(int(input("input index. "))))
盡管有所有優雅的內置解決方案,但我更喜歡使用如下字典:
{0:'mon', 1:'tue', 2:'wed', 3:'thur', 4:'fri', 5:'sat', 6:'sun'}
我發現這是字典的一個非常合適的用例,因為這將允許您使用適合您需要的任何語言或縮寫,以及將任何一天設置為一周的第一天。 key, value
對的一個示例可能是daynames[0] = 'mon'
。 您只需要一行設置即可。
daynames = {0:'mon', 1:'tue', 2:'wed', 3:'thur', 4:'fri', 5:'sat', 6:'sun'}
現在,運行daynames[1]
將返回'tue'
。
像這樣設置它也釋放了一堆帶有dicts
的整潔的可能性。 如果您有一個包含未排序整數的列表或熊貓系列,例如lst = [5, 3, 2, 6, 7,]
,只需運行:
[daynames[e] for e in lst]
你會得到:
['sat', 'thur', 'wed', 'sun', 'tue']
daynames = {0:'mon',1:'tue',2:'wed',3:'thur',4:'fri',5:'sat',6:'sun'}
lst = [5, 3, 2, 6, 1]
[daynames[e] for e in lst]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.