簡體   English   中英

從 Weekday int 獲取日期名稱

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM