LoginSignup
7
10

More than 3 years have passed since last update.

【Python】文字列⇒日付、日付⇒文字列の変換(str, datetime)(備忘録)

Last updated at Posted at 2021-03-20

自分用メモ

文字列⇒日付(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 ロケールの時間を適切な形式で表します。
%% 文字 '%' を表します。

参考リンク
Documentation » Python 標準ライブラリ » データ型

7
10
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
10