工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Python

Pythonのstrftime()をマスター:日付と時刻を見やすい文字列に変換する

Python strftime()

この記事では、例を交えてdate、time、datetimeオブジェクトを同等の文字列表現に変換する方法を学びます。

動画:Pythonにおける日付と時刻

strftime()メソッドは、date、time、またはdatetimeオブジェクトを使用して日付と時刻を表す文字列を返します。


例1:strftime()を使用したdatetimeから文字列への変換

以下のプログラムは、現在の日付と時刻を含むdatetimeオブジェクトを、さまざまな文字列形式に変換します。

from datetime import datetime
now = datetime.now()  # 現在の日付と時刻
year = now.strftime("%Y")
print("年:", year)
month = now.strftime("%m")
print("月:", month)
day = now.strftime("%d")
print("日:", day)
time = now.strftime("%H:%M:%S")
print("時刻:", time)
date_time = now.strftime("%m/%d/%Y, %H:%M:%S")
print("日付と時刻:", date_time)

プログラムを実行すると、出力は以下のようになります:


年: 2018
月: 12
日: 24
時刻: 04:59:31
日付と時刻: 12/24/2018, 04:59:31

ここでは、year、day、time、date_timeは文字列ですが、nowはdatetimeオブジェクトです。


strftime()の仕組み

上記のプログラムで、%Y、%m、%dなどはフォーマットコードです。strftime()メソッドは1つ以上のフォーマットコードを引数として受け取り、それに基づいてフォーマットされた文字列を返します。

  1. datetimeモジュールからdatetimeクラスをインポートしました。これはdatetimeクラスのオブジェクトがstrftime()メソッドにアクセスできるためです。
  2. 現在の日付と時刻を含むdatetimeオブジェクトがnow変数に格納されます。
  3. strftime()メソッドを使用してフォーマット済み文字列を作成できます。
  4. strftime()メソッドに渡す文字列には、複数のフォーマットコードを含めることができます。

例2:タイムスタンプから文字列を作成する

from datetime import datetime
timestamp = 1528797322
date_time = datetime.fromtimestamp(timestamp)
print("日付時刻オブジェクト:", date_time)
d = date_time.strftime("%m/%d/%Y, %H:%M:%S")
print("出力 2:", d)
d = date_time.strftime("%d %b, %Y")
print("出力 3:", d)
d = date_time.strftime("%d %B, %Y")
print("出力 4:", d)
d = date_time.strftime("%I%p")
print("出力 5:", d)

プログラムを実行すると、出力は以下のようになります:


日付時刻オブジェクト: 2018-06-12 09:55:22
出力 2: 06/12/2018, 09:55:22
出力 3: 12 Jun, 2018
出力 4: 12 June, 2018
出力 5: 09AM

フォーマットコード一覧

以下の表は、strftime()メソッドに渡せるすべてのコードを示しています。

ディレクティブ意味例
%a省略された曜日名Sun, Mon, ...
%A完全な曜日名Sunday, Monday, ...
%w曜日を10進数で表す(0=日曜日)0, 1, ..., 6
%d月内の日付(ゼロ埋め10進数)01, 02, ..., 31
%-d月内の日付(10進数、埋めなし)1, 2, ..., 30
%b省略された月名Jan, Feb, ..., Dec
%B完全な月名January, February, ...
%m月をゼロ埋め10進数で表す01, 02, ..., 12
%-m月を10進数で表す(埋めなし)1, 2, ..., 12
%y世紀なしの年(ゼロ埋め10進数)00, 01, ..., 99
%-y世紀なしの年(10進数、埋めなし)0, 1, ..., 99
%Y世紀付きの年(10進数)2013, 2019など
%H時(24時間制、ゼロ埋め10進数)00, 01, ..., 23
%-H時(24時間制、10進数、埋めなし)0, 1, ..., 23
%I時(12時間制、ゼロ埋め10進数)01, 02, ..., 12
%-I時(12時間制、10進数、埋めなし)1, 2, ... 12
%pロケールのAMまたはPMAM, PM
%M分(ゼロ埋め10進数)00, 01, ..., 59
%-M分(10進数、埋めなし)0, 1, ..., 59
%S秒(ゼロ埋め10進数)00, 01, ..., 59
%-S秒(10進数、埋めなし)0, 1, ..., 59
%fマイクロ秒(左ゼロ埋め10進数)000000 - 999999
%zUTCオフセット(+HHMMまたは-HHMM形式)
%Zタイムゾーン名
%j年間通算日(ゼロ埋め10進数)001, 002, ..., 366
%-j年間通算日(10進数、埋めなし)1, 2, ..., 366
%U週番号(日曜日を週の初めとする)00, 01, ..., 53
%W週番号(月曜日を週の初めとする)00, 01, ..., 53
%cロケールの適切な日付と時刻表現Mon Sep 30 07:06:05 2013
%xロケールの適切な日付表現09/30/13
%Xロケールの適切な時刻表現07:06:05
%%リテラルの'%'文字%

例3:ロケールに適した日付と時刻

from datetime import datetime
timestamp = 1528797322
date_time = datetime.fromtimestamp(timestamp)
d = date_time.strftime("%c")
print("出力 1:", d)
d = date_time.strftime("%x")
print("出力 2:", d)
d = date_time.strftime("%X")
print("出力 3:", d)

プログラムを実行すると、出力は以下のようになります:


出力 1: Tue Jun 12 09:55:22 2018
出力 2: 06/12/18
出力 3: 09:55:22

フォーマットコード%c、%x、%Xは、ロケールに適した日付と時刻の表現に使用されます。


また、Pythonのstrptime()も確認することをお勧めします。strptime()メソッドは文字列からdatetimeオブジェクトを作成します。

Python

  1. Python キーワードと識別子: 予約語と命名規則をマスター
  2. Python データ型マスター: 実践ガイド
  3. Python 演算子完全マスター: 包括的ガイド
  4. Python 関数引数完全マスター: 位置引数・キーワード引数・デフォルト引数
  5. Python辞書完全ガイド:作成、操作、高度なテクニック
  6. Pythonイテレータ完全ガイド:仕組みと自作方法
  7. Pythonクロージャ解説:ネスト関数が変数を捕捉する仕組み
  8. Python正規表現(reモジュール)実践ガイド
  9. Python datetimeマスター:日付・時刻・タイムゾーン実践ガイド
  10. Pythonのtimeモジュールをマスター:関数、構造体、実践例
  11. Pythonのtime.sleep()をマスター:ベストプラクティス、マルチスレッド、実例