- 1. 概要
- 2. ロケール
- 3. 書式
- 4. msec 単位で出力
- 5. 備考
1. 概要
本ページでは、前ページでちらっと触れている、時刻の文字列変換について記述します。
2. ロケール
ってことで、ロケールの話になります。本来は、ページを分けるべきかもしれませんが、うまい具合に対応すべきこととなりましたので、ここで記述します。
「strftime」のような、ロケールに依存するような関数を使う場合、ロケールを設定する必要があります。
前ページのソースに手を入れて。
import datetime
import locale
print(locale.getlocale(locale.LC_ALL))
locale.setlocale(locale.LC_ALL, 'ja_JP.UTF-8')
print(locale.getlocale(locale.LC_ALL))
now = datetime.datetime.now()
print(now)
print(now.strftime('%Y年%m月%d日(%a) %H:%M:%S'))
print(now.strftime('%Y年%m月%d日(%a) %p %I:%M:%S'))
print(now.strftime('%x(%A) %X'))
上記のソースを実行すると、下記のような結果が得られます。
('C/C', 'UTF-8/C/C/C/C')
('ja_JP', 'UTF-8')
2025-05-13 16:19:27.970778
2025年05月13日(火) 16:19:27
2025年05月13日(火) 午後 04:19:27
2025/05/13(火曜日) 16時19分27秒
3. 書式
「strftime」に設定する書式の主なものは、下記になります。
他の多くの言語とほぼ同じかと思います。
| 書式 | 意 味 | 備 考 |
| %a | ロケールの短縮された曜日 | 「日」「月」...「土」 |
| %A | ロケールの曜日 | 「日曜日」「月曜日」...「土曜日」 |
| %d | 月の何日目か | 「00」「01」~「31」 |
| %H | 時(24時間) | 「00」「01」~「24」 |
| %I | 時(12時間) | 「00」「01」~「12」 |
| %m | 月 | 「00」「01」~「12」 |
| %M | 分 | 「00」「01」~「59」 |
| %p | ロケールの午前・午後 | 「午前」「午後」 |
| %S | 秒 | 「00」「01」~「59」 |
| %f | 10進数で表記したマイクロ秒 (左側から0埋めされます) | 「000000」「000001」~「999999」 |
| %x | ロケールの日付を適切な形式で | 「1975/01/01」~「9999/12/31」 |
| %X | ロケールの時間を適切な形式で | 「00時00分00秒」~「23時59分59秒」 |
| %y | 西暦下2桁 | 「00」「01」~「99」 |
| %Y | 西暦4桁 | 「1975」「1976」~「9999」 |
| %z | UTCオフセット | (空文字列), +0000, -0400, +1030, +063415, -030712.345216 |
「%X」のロケールの時間を適切な形式で、というのは納得できますが。
「%x」のロケールの日付を適切な形式でというのは、議論の余地がありそうですな・・・。
4. msec 単位で出力
import datetime
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
の実行結果。
2025-05-13 16:41:34
は、秒単位なので、その下まで、欲しいとき。
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S:%f'))
と書くと。
2025-05-13 16:43:13:412304
となって、マイクロ秒は、長すぎで直感的にわかりにくい。
ミリ秒、もしくは、10ミリ秒で出力したい・・・とき、「python」の文字列の特性を生かすと楽ちんです。
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S:%f'))
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S:%f')[:-3])
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S:%f')[:-4])
の結果は、下記のようになります。
2025-05-13 16:47:26:706439
2025-05-13 16:47:26:707
2025-05-13 16:47:26:70
5. 備考
本ページは、下記のサイトを参考にさせていただきました。
「datetime --- 基本的な日付型および時間型」
「Pythonのdatetimeでformat変換 ミリ秒、文字列、タイムゾーン」
|
|