【書式コード一覧付】Pythonのstrftimeをマスターしよう

※本サイトにはプロモーション・広告が含まれています。

(最終更新日:2023年7月)

✔このような方へ向けて書かれた記事となります

「Pythonのstrftimeとは何だろう?」
「strftimeの具体的な使い方を知りたい」
「strftimeを使ったコードの実例を参照したい」

✔当記事でお伝えすること

  • Pythonのstrftimeの基本知識
  • strftimeの具体的な書き方と応用方法
  • strftimeを用いた実際のコード例

当記事では、Pythonのstrftimeの基本と、その機能を最大限に活用するための手法から具体的なコード例まで、詳しく解説します。

ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロマネ/システムプランニング(元外資系金融機関営業)

【副業】ブログ(月間12万PV)/YouTube/Web・アプリ制作

コミュニケーション × ビジネススキル × 文章力 × プログラミングスキルを活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

【名著】リーダブルコード

Pythonのstrftimeを理解するための前提知識

こちらでは、Pythonとその日時処理関数であるstrftimeの重要性についてお伝えしていきます。

  • Pythonとは
  • strftime関数とは
  • strftimeの重要性

Pythonとは

Pythonは、多くの科学技術計算、データ分析、ウェブ開発、オートメーションなど、さまざまな領域で利用されているプログラミング言語です。

初心者から上級者まで幅広いユーザーに支持されている理由はこちら。

  • そのシンプルさ
  • コードの可読性
  • 広範なライブラリとフレームワーク

strftime関数とは

strftime関数とは、日時を指定した形式の文字列に変換するための関数です。

Pythonのdatetimeライブラリに備わっていて、Python環境さえあれば、誰でも使えます。

例えば以下のようなDatetime型を文字列に変換できるのです。

from datetime import datetime

# 現在の日時を取得
now = datetime.now()

# 指定した形式の文字列に変換
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")

print(formatted_date)  # 出力: 2023-06-07 15:30:00

datetimeライブラリについて詳しく知りたい方はこちらの記事もどうぞ。

【Python】datetime型の扱い方|コードで徹底解説
Pythonのdatetime型を扱う方法が知りたいですか?当記事では、Python datetimeの基本的な使用方法や実践的な例を詳細に解説しています。さまざまなケースに合わせたコードを紹介していますので、初心者の方でもすぐに手を動かして学べます。ぜひご覧ください。

strftimeの重要性について

Pythonのstrftime関数は、Pythonプログラマーにとって必須のスキルとなります。

なぜならプログラミングにおいて、日時の扱いは重要な役割を果たすからです。

以下のような多数の場面で、使える関数になります。

  • ログのタイムスタンプ
  • データのタイムライン分析
  • 予定管理

datetimeモジュール:日時を扱う

ここでは、Pythonのdatetimeモジュールについて詳しく解説します。

  • 現在の日付と時刻の取得:datetime.now()
  • datetimeオブジェクトの生成方法
  • dateとtimeオブジェクトへの変換
  • dateとtimeオブジェクトからdatetimeオブジェクトを作成

現在の日付と時刻の取得:datetime.now()

Pythonのdatetimeモジュールを使うと、現在の日時を取得できます。

具体的なコードは次の通りです。

from datetime import datetime

# 現在の日時を取得
now = datetime.now()

print(now)  # 出力:2023-07-08 07:22:30.863694

上記のコードを実行すると、現在の日時が表示されます。

ただしこの時点でのデータ型は「datetime」型です。

print(type(now)) # 出力:<class 'datetime.datetime'>

datetimeオブジェクトの生成方法

datetimeオブジェクトは、以下の要素を持つ日時表現のひとつです。

  • 時間
  • マイクロ秒

具体的な生成方法は以下のコードに示します。

from datetime import datetime

# datetimeオブジェクトの生成
dt = datetime(2023, 7, 4, 12, 30, 45)

print(dt)

2023年7月4日12時30分45秒を示すdatetimeオブジェクトを作成しています。

dateとtimeオブジェクトへの変換

datetimeオブジェクトからは、dateオブジェクトとtimeオブジェクトへの変換が可能です。

from datetime import datetime

dt = datetime(2023, 7, 4, 12, 30, 45)

# datetimeからdateオブジェクトへ変換
date = dt.date()

# datetimeからtimeオブジェクトへ変換
time = dt.time()

print(date)
print(time)

先程作成したdatetimeオブジェクトから日付情報を持つdateオブジェクトと時間情報を持つtimeオブジェクトを生成しています。

dateとtimeオブジェクトからdatetimeオブジェクトを作成

dateオブジェクトとtimeオブジェクトを組み合わせて、datetimeオブジェクトを生成することも可能です。

from datetime import datetime, time, date

d = date(2023, 7, 4)
t = time(12, 30, 45)

# dateとtimeからdatetimeを生成
dt = datetime.combine(d, t)

print(dt)

以下をcombineメソッドで組み合わせ、新たなdatetimeオブジェクトを作成しています。

  • dateオブジェクト:2023年7月4日
  • timeオブジェクト:12時30分45秒を

dateモジュール:日付のみを扱う

日付のみを扱いたい場合にはdateモジュールが利用できます。

年、月、日の情報だけを取り扱うため、時間やタイムゾーン等の情報が不要な場合に便利です。

  • 現在の日付の取得:date.today()
  • dateオブジェクトの生成方法

現在の日付の取得:date.today()

現在の日付を取得する方法について説明します。

Pythonのdateモジュールのtoday()メソッドを用いると、現在の日付を取得することが可能です。

from datetime import date

# 現在の日付を取得
today = date.today()

print(today)

このコードを実行すると、現在の日付を’YYYY-MM-DD’の形式で表示します。

dateオブジェクトの生成方法

特定の日付を表現したい場合にはdateオブジェクトを生成します。

生成方法は以下の通りです。

from datetime import date

# dateオブジェクトの生成
d = date(2023, 7, 4)

print(d)

dateモジュールは日付情報の取得や特定の日付の生成など、日付を扱うための機能を提供しています。

timeモジュール:時間を扱う

時間を扱う場合にはtimeモジュールを用います。

時間、分、秒の情報だけを扱うため、日付やタイムゾーンの情報が不要な場合に便利です。

  • 現在時刻の取得
  • timeオブジェクトの生成

現在時刻の取得とtimeオブジェクトの生成

現在時刻の取得方法を見ていきましょう。

Pythonのdatetimeモジュールのnow()メソッドを用いてdatetimeオブジェクトを取得した後、timeメソッドを用います。

from datetime import datetime

# 現在の日時を取得
now = datetime.now()

# 現在時刻の取得
current_time = now.time()

print(current_time)

このコードを実行すると、現在の時間を’HH:MM:SS.ssssss’の形式で表示します。

timeオブジェクトの生成

特定の時間を表現したい場合にはtimeオブジェクトを生成します。

生成方法は以下の通りです。

from datetime import time

# timeオブジェクトの生成
t = time(13, 45, 30)  # 13時45分30秒

print(t)

13時45分30秒を表すtimeオブジェクトを作成しています。

timedeltaモジュール:時間間隔を扱う

時間間隔を計算したい場合、timedeltaモジュールが便利です。

特定の日時から何日後、何時間後などを計算するのに使用します。

  • datetimeとdateオブジェクトの時間差の計算
  • timedeltaオブジェクトの使い方:足し算、引き算

詳しくはこちらでも解説しています。

【便利】Pythonのtimedeltaを完全マスター|実例付
Pythonの「timedelta」について知りたいですか?timedeltaは時間差を扱うことができる非常に便利なツールです。当記事では、timedeltaの具体的な使用方法を詳細なコード付きで丁寧に解説しています。特にPython初心者の方にとって、見逃せない情報が満載です。

datetimeとdateオブジェクトの時間差の計算

datetimeオブジェクトやdateオブジェクトの間の時間差を計算する際には、timedeltaオブジェクトを利用します。

以下画素の例です。

from datetime import datetime, timedelta

# 現在の日時を取得
now = datetime.now()

# 5日後の日時を計算
future = now + timedelta(days=5)

print(future)

上記のコードでは、現在の日時に5日後を加算し、その結果を表示しています。

timedeltaオブジェクトの使い方:足し算、引き算

timedeltaオブジェクトは、日、時間、分、秒を表すことができ、それらを足したり引いたりすることが可能です。

以下の例では、10日と3時間と30分を表すtimedeltaオブジェクトを作成し、それらを足し算と引き算で操作しています。

from datetime import timedelta

# timedeltaオブジェクトの生成
delta1 = timedelta(days=10)
delta2 = timedelta(hours=3, minutes=30)

# timedelta同士の足し算
print(delta1 + delta2)

# timedelta同士の引き算
print(delta1 - delta2)

このように、timedeltaは日付や時間の計算を容易にする強力なツールです。

次に、日付と時間をテキストに変換するためのstrftimeについて見ていきましょう。

strftime:日付と時間をテキストに変換

いよいよstrftimeについて見ていきましょう。

これは日付や時間を任意のフォーマットの文字列に変換できる便利な方法です。

  • strftimeの基本的な書式コード
  • strftimeのサンプルコードとその解説
  • strftimeで使える書式コード一覧

strftimeの基本的な書式コード

strftime関数では、指定した書式に従ってdatetimeオブジェクトを文字列に変換します。

[datetime型オブジェクト].strftime(書式コード)

例えば現在時刻の年を「○○年」という形で表示したいときは、以下のようになります。

from datetime import datetime

# 現在の日時を取得
now = datetime.now()

# 年を「○年」という形で表示
formatted_year = now.strftime("%Y年")

print(formatted_year)  # 出力: 2023年

年に相当する書式コードは、「%Y」です。

これらを文字列に埋め込むことで、適切な値が代入され、任意の文字列が作れるのです。

strftimeのサンプルコードとその解説

例えば、現在の日時を「YYYY-MM-DD HH:MM:SS」の形式で表示したい場合、以下のように書けます。

from datetime import datetime

# 現在の日時を取得
now = datetime.now()

# 日時を「YYYY年MM月DD日HH時MM分SS秒」の形式で表示
formatted_datetime = now.strftime("%Y年%m月%d日%H時%M分%S秒")

print(formatted_datetime)  # 出力例: 2023年06月07日15時30分45秒

書式コードを文字列の中に埋め込むだけ。

書式コードをしっかりと頭に入れておきましょう。

strftimeで使える書式コード一覧

Pythonのstrftimeメソッドで使用する書式コードの一覧です。

これらを参考にお好きな日付け文字列を作りましょう。

フォーマットコード説明
%a曜日の省略名
%A曜日のフルネーム月曜日
%w曜日を数値で (0 = 日曜)3
%d月の日付を2桁の数値で07
%b月の省略名7月
%B月のフルネーム7月
%m月を2桁の数値で07
%y年の下2桁23
%Y年を4桁で2023
%H24時間制の時間 (00-23)14
%I12時間制の時間 (01-12)02
%pAMまたはPM午後
%M分 (00-59)05
%S秒 (00-59)09
%fマイクロ秒 (6桁の数値)123456
%zUTCオフセット (±HHMMまたは±HHMMSS形式)+0900
%Zタイムゾーン名JST
%j年の通算日 (001-366)188
%U年の週番号 (日曜を週の始まりとし、00-53)28
%W年の週番号 (月曜を週の始まりとし、00-53)27
%cロケールの適切な日付と時刻の表現2023年 7月 7日 月曜日 14:05:09
%xロケールの適切な日付の表現2023年 7月 7日
%Xロケールの適切な時刻の表現14:05:09

日本語表記にするためには、システムが日本語ロケールでなければなりません。

またこれらは文字列から日付型へ変換できる「strptime」でも使えるものです。

strptime:テキストから日付と時間への変換

datetimeモジュールのもう一つの強力な機能が、テキストから日付や時間の情報を取り出すためのstrptime関数です。

文字列から日付や時間を解析する場合に便利です。

こちらでは簡単にサンプルコードをご覧いただきます。

from datetime import datetime

# 日付情報を含む文字列
date_string = "2023-07-04 12:34:56"

# strptimeを使って文字列からdatetimeオブジェクトを生成
datetime_object = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")

print(datetime_object)

文字列から日付と時間の情報を読み取り、datetimeオブジェクトを生成。

書式コードを指定することで、対応している値を読み取り、datetime型のオブジェクトが作られるのです。

より高度なstrftimeの応用例

ここでは、より高度なstrftimeの使用例を紹介します。

strftimeは柔軟性があり、さまざまな日時フォーマットを扱えるようになるでしょう。

  • 西暦の2桁表示と12時間制表示
  • 曜日やタイムゾーンを含む日付フォーマットの作成

西暦の2桁表示と12時間制表示

以下のコードは、西暦の2桁表示と12時間制表示を行います。

from datetime import datetime

# 現在の日時を取得
now = datetime.now()

# strftimeを使用して西暦を2桁で表示
print(now.strftime("%y"))

# strftimeを使用して時間を12時間制で表示
print(now.strftime("%I:%M %p"))

%yは西暦を2桁で、%Iは時間を12時間制で、%pは午前または午後を表すAMまたはPMを表示します。

曜日やタイムゾーンを含む日付フォーマットの作成

曜日やタイムゾーンを含む日付フォーマットも簡単に作成できます。

from datetime import datetime

# 現在の日時を取得
now = datetime.now()

# strftimeを使用して曜日とタイムゾーンを含む日付を表示
print(now.strftime("%A, %d %B %Y, %I:%M %p %Z"))

%Aで曜日をフルネームで、%Bで月をフルネームで、%Zでタイムゾーンを表示しています。

strftimeのよくあるエラーとその対策

ここでは、一般的なエラーとその対策について説明します。

strftimeの使用時で、エラーが発生した場合に備えましょう。

  • 避けるべき一般的なエラー
  • トラブルシューティングガイド

避けるべき一般的なエラー

最もよく遭遇するエラーの一つは、間違った書式指定子を使用することです。

例えば、%Yは4桁の西暦を表しますが、それを%yと誤って記述すると2桁の西暦が表示されます。

また、小文字と大文字は異なる意味を持つため、これらを混同しないように注意することが重要です。

from datetime import datetime

# 間違った書式指定子の使用例
now = datetime.now()

# %Yと誤って%yを使用すると、2桁の西暦が表示される
incorrect_year_format = now.strftime("%y年%m月%d日")
print(incorrect_year_format)  # 出力例: 23年06月07日

# 小文字の%hは、12時間制の時刻を表すため、24時間制の%hと混同しないように注意する
incorrect_hour_format = now.strftime("%H時%M分%h秒")
print(incorrect_hour_format)  # 出力例: 15時30分%h秒

トラブルシューティングガイド

strftimeのエラーを解決するために、使用している書式指定子が正しいかどうかを確認しましょう。

書式指定子のリストはPythonの公式ドキュメントはもちろん、当記事にもご用意しています。

書式指定子を正しく使用している場合は、オブジェクトが正しい日時データ型であるかを確認してください。

strftimeはdatetime、date、timeオブジェクトに対してのみ機能します。

# エラーとなるコード
from datetime import datetime

now = datetime.now()
print(now.strftime("%m/%d/%y %I:%M %p %Y"))  # %Yがエラーの原因

# 正しいコード
from datetime import datetime

now = datetime.now()
print(now.strftime("%m/%d/%Y %I:%M %p"))  # %Yを正しく使用

よくある疑問に対する回答

Q: strftimeは何のために使用しますか?

A: strftime関数は、日付や時間のオブジェクトを指定されたフォーマットの文字列に変換するために使用します。

Q: strftimeで24時間制と12時間制をどのように区別しますか?

A: %Hを使用すると24時間制、%Iと%pを使用すると12時間制の時間を表示できます。

Q: datetimeとtimeの違いは何ですか?

A: datetimeオブジェクトは日付と時間の両方を管理しますが、timeオブジェクトは時間のみを管理します。

まとめ

当記事では、Pythonのstrftimeの基本を学びました。

  • datetime、date、timeオブジェクトの生成方法
  • 各オブジェクトの機能
  • strftimeの基本的な使用法
  • 複雑なstrftimeの応用例

Pythonのstrftime関数は、日付や時間のデータを様々なフォーマットの文字列に変換するための非常に強力なツール。

日付や時間データを人間が読みやすい形式にするために非常に便利です。

各プロジェクトの要件に合わせてカスタマイズできるため、日付や時間に関するデータの取り扱いを改善するのに役立ちます。

from datetime import datetime

now = datetime.now()
print(now.strftime("%m/%d/%Y %I:%M %p"))  # "MM/DD/YYYY HH:MM AM/PM"の形式で表示

これをもとに、日付と時間に関するコーディングがより簡単に、かつ効率的になることを願っています。

タイトルとURLをコピーしました