Date: 2023-03-28 (Tue) 09:13:48
Model: gpt-4
結城浩:
現在日時を "YYYY-MM-DD (w) HH:mm:ss" の形式で得る方法を教えてください。UTCではなくローカル時間です。wは曜日のつもりです。プログラミング言語はPythonでお願いします。
Pythonでローカル時間を "YYYY-MM-DD (w) HH:mm:ss" の形式で取得する方法は以下のようになります。
from datetime import datetime
# 現在のローカル時間を取得
now = datetime.now()
# 曜日のリスト
weekday_list = ['月', '火', '水', '木', '金', '土', '日']
# フォーマットに従って文字列に変換
formatted_time = now.strftime(f"%Y-%m-%d ({weekday_list[now.weekday()]}) %H:%M:%S")
print(formatted_time)
strftime()
メソッドを使って時刻をフォーマットし、曜日はweekday_list
から取得します。これで、指定された形式のローカル時間が得られます。
結城浩:
strftime
の特殊文字の中には曜日を表すものは含まれていないのでしょうか。
すみません、私の説明が不十分でした。strftime
の特殊文字の中には、曜日を表すものも含まれています。具体的には、以下の特殊文字が利用可能です。
%a
: 短縮された曜日名 (例: Mon)%A
: 完全な曜日名 (例: Monday)%w
: 曜日を数字で表す (0: 日曜日, 1: 月曜日, ..., 6: 土曜日)
ただし、これらの特殊文字は英語の曜日名や数字での表現となります。日本語の曜日名を取得するためには、上の回答で示したように曜日のリストを用意する必要があります。
以下に、日本語の曜日名を含む形式で出力する例を改めて示します。
from datetime import datetime
# 現在のローカル時間を取得
now = datetime.now()
# フォーマットに従って文字列に変換
formatted_time = now.strftime("%Y-%m-%d (%a) %H:%M:%S")
# 英語の曜日名を日本語の曜日名に変換
weekday_eng_to_jp = {
'Mon': '月',
'Tue': '火',
'Wed': '水',
'Thu': '木',
'Fri': '金',
'Sat': '土',
'Sun': '日',
}
for eng, jp in weekday_eng_to_jp.items():
formatted_time = formatted_time.replace(eng, jp)
print(formatted_time)
こちらが日本語の曜日名を含む形式で現在日時を表示する方法です。strftime
で英語の曜日名を取得し、辞書を使って日本語の曜日名に変換しています。
結城浩:
わかりました。ありがとうございます。私の目的には %a
を使えばよさそうです。質問が不十分でごめんなさい。
いえいえ、質問が不十分ではありません。私の方で十分に理解していなかったことが問題でした。お力になれてうれしいです。
%a
を使った形式で現在日時を表示する方法は以下の通りです。
from datetime import datetime
# 現在のローカル時間を取得
now = datetime.now()
# フォーマットに従って文字列に変換
formatted_time = now.strftime("%Y-%m-%d (%a) %H:%M:%S")
print(formatted_time)
このように書くと、現在日時が "YYYY-MM-DD (AbbrWeekday) HH:mm:ss" の形式で表示されます。AbbrWeekdayの部分は例えば "Mon" のような短縮された曜日名になります。
何か他にもご質問があればお気軽にお聞かせください。お手伝いできることがあれば喜んで対応いたします。
https://mobile.twitter.com/hyuki/status/1640508394888110080