曜日の整数(0,1,2 ...)があり、曜日名(「月曜日」、「火曜日」、...)を取得する必要があります。
組み込みの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"
calendarモジュール を使用するほうが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']
私はカレンダーモジュールを使用しています:
import calendar
calendar.day_name[0]
'Monday'
Datetimeオブジェクトから曜日名を出力するだけの場合は、次のように使用できます。
current_date = datetime.now
current_date.strftime('%A') # will return "Wednesday"
current_date.strftime('%a') # will return "Wed"
それは非常に簡単です:
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 calendar
month,day,year = 9,19,1995
ans =calendar.weekday(year,month,day)
print(calendar.day_name[ans])
calendar.weekday(year、month、day)-年(1970–…)、月()の曜日(0は月曜日)を返します1–12)、日(1–31)。
calendar.day_name-現在のロケールの曜日を表す配列
詳細については- https://docs.python.org/2/library/calendar.html#calendar.weekday
独自のリストを作成し、フォーマットで使用できます。
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