自分用メモ
文字列⇒日付(datetime)、日付(datetime)⇒文字列の変換
文字列から日付(datetime)への変換
datetime.strptime(date_string, format)
にて変換
from datetime import datetime
datetime_1 = '2021-03-21 01:02:03'
datetime_2 = '20210321010203'
datetime_3 = '2021/03/21'
datetime_4 = '20210321'
datetime_5 = '2021年3月21日 1時2分'
# 文字列からフォーマットを指定してdatetime型へ変換
convert_datetime_1 = datetime.strptime(datetime_1, '%Y-%m-%d %H:%M:%S')
convert_datetime_2 = datetime.strptime(datetime_2, '%Y%m%d%H%M%S')
convert_datetime_3 = datetime.strptime(datetime_3, '%Y/%m/%d')
convert_datetime_4 = datetime.strptime(datetime_4, '%Y%m%d')
convert_datetime_5 = datetime.strptime(datetime_5, '%Y年%m月%d日 %H時%M分')
# 出力
print(convert_datetime_1)
print(convert_datetime_2)
print(convert_datetime_3)
print(convert_datetime_4)
print(convert_datetime_5)
出力結果
2021-03-21 01:02:03
2021-03-21 01:02:03
2021-03-21 00:00:00
2021-03-21 00:00:00
2021-03-21 01:02:00
日付(datetime)から文字列への変換
スマートじゃない書き方
from datetime import datetime
dt = datetime.now()
# 出力
print("{0:%Y-%m-%d %H:%M:%S}".format(dt))
print("{0:%Y年%m月%d日 %H時%M分}".format(dt))
print(str(dt.year ) + '年')
print(str(dt.year ) + '年')
print(str(dt.month ) + '月')
print(str(dt.day ) + '日')
print(str(dt.hour ) + '時')
print(str(dt.minute) + '分')
print(str(dt.second) + '秒')
print(dt.strftime('%A')) # 曜日(英語)
スマートな書き方
イケメンエンジニアがサラリと教えてくれました。@shiracamus さん感謝。
確かにスッキリ。
from datetime import datetime
dt = datetime.now()
# 出力
print(f'{dt:%Y-%m-%d %H:%M:%S}')
print(f'{dt:%Y年%m月%d日 %H時%M分}')
print(f'{dt.year}年')
print(f'{dt.year}年')
print(f'{dt.month}月')
print(f'{dt.day}日')
print(f'{dt.hour}時')
print(f'{dt.minute}分')
print(f'{dt.second}秒')
print(f'{dt:%A}') # 曜日(英語)
出力結果
2021-03-21 01:01:45
2021年03月21日 01時01分
2021年
2021年
3月
21日
1時
1分
45秒
Sunday
strftime() と strptime() の書式コード
strftime() と strptime() の書式コード
指定子 | 意味 |
---|---|
%a | ロケールの曜日名を短縮形で表示します。 |
%A | ロケールの曜日名を表示します。 |
%w | 曜日を10進表記した文字列を表示します。0 が日曜日で、6 が土曜日を表します。 |
%d | 0埋めした10進数で表記した月中の日にち。 |
%b | ロケールの月名を短縮形で表示します。 |
%B | ロケールの月名を表示します。 |
%m | 0埋めした10進数で表記した月。 |
%y | 0埋めした10進数で表記した世紀無しの年。 |
%Y | 西暦 (4桁) の 10 進表記を表します。 |
%H | 0埋めした10進数で表記した時 (24時間表記)。 |
%I | 0埋めした10進数で表記した時 (12時間表記)。 |
%p | ロケールの AM もしくは PM と等価な文字列になります。 |
%M | 0埋めした10進数で表記した分。 |
%S | 0埋めした10進数で表記した秒。 |
%f | 10進数で表記したマイクロ秒 (左側から0埋めされます)。 |
%z | UTCオフセットを ±HHMM[SS[.ffffff]] の形式で表示します (オブジェクトがnaiveであれば空文字列)。 |
%Z | タイムゾーンの名前を表示します (オブジェクトがnaiveであれば空文字列)。 |
%j | 0埋めした10進数で表記した年中の日にち。 |
%U | 0埋めした10進数で表記した年中の週番号 (週の始まりは日曜日とする)。新年の最初の日曜日に先立つ日は 0週に属するとします。 |
%W | 0埋めした10進数で表記した年中の週番号 (週の始まりは月曜日とする)。新年の最初の月曜日に先立つ日は 0週に属するとします。 |
%c | ロケールの日時を適切な形式で表します。 |
%x | ロケールの日付を適切な形式で表します。 |
%X | ロケールの時間を適切な形式で表します。 |
%% | 文字 '%' を表します。 |