【Python】今日の日付を文字列で取得する方法

この記事では、Pythonの基本的な関数やメソッドを使って、今日の日付をさまざまな形式で文字列に変換する方法をわかりやすく解説します。

具体的なコード例やフォーマット指定子の使い方も紹介するので、初心者の方でも簡単に理解できます。

さらに、日付と時刻を同時に取得する方法や、タイムゾーンを考慮した日付取得の方法も学べます。

目次から探す

日付を文字列に変換する方法

Pythonで日付を文字列に変換する方法はいくつかありますが、ここでは代表的な方法を紹介します。

特に、str()関数datetimeモジュールのstrftime()メソッドを使った方法について詳しく解説します。

str()関数を使う

str()関数の基本

str()関数は、Pythonの組み込み関数で、任意のオブジェクトを文字列に変換するために使用されます。

例えば、数値やリスト、辞書などを文字列に変換することができます。

# 数値を文字列に変換
num = 123
num_str = str(num)
print(num_str)  # 出力: '123'
# リストを文字列に変換
lst = [1, 2, 3]
lst_str = str(lst)
print(lst_str)  # 出力: '[1, 2, 3]'

datetimeオブジェクトをstr()で変換する方法

Pythonのdatetimeモジュールを使うと、日付や時刻を扱うことができます。

datetimeオブジェクトをstr()関数で文字列に変換することも可能です。

from datetime import datetime
# 現在の日付と時刻を取得
now = datetime.now()
now_str = str(now)
print(now_str)  # 出力例: '2023-10-01 12:34:56.789012'

ただし、str()関数を使うと、デフォルトのフォーマットで文字列に変換されます。

特定のフォーマットで日付を文字列に変換したい場合は、strftime()メソッドを使う必要があります。

strftime()メソッドを使う

strftime()メソッドは、datetimeオブジェクトを指定したフォーマットで文字列に変換するためのメソッドです。

strftime()メソッドの概要

strftime()メソッドは、datetimeオブジェクトに対して呼び出され、フォーマット指定子を使って日付や時刻を文字列に変換します。

以下に基本的な使用例を示します。

from datetime import datetime
# 現在の日付と時刻を取得
now = datetime.now()
# フォーマットを指定して文字列に変換
formatted_date = now.strftime('%Y-%m-%d')
print(formatted_date)  # 出力例: '2023-10-01'

フォーマット指定子の一覧

strftime()メソッドで使用できるフォーマット指定子は多数ありますが、ここでは代表的なものを紹介します。

%Y: 年(4桁)

%Yは4桁の年を表します。

from datetime import datetime
now = datetime.now()
year = now.strftime('%Y')
print(year)  # 出力例: '2023'

%m: 月(2桁)

%mは2桁の月を表します。

from datetime import datetime
now = datetime.now()
month = now.strftime('%m')
print(month)  # 出力例: '10'

%d: 日(2桁)

%dは2桁の日を表します。

from datetime import datetime
now = datetime.now()
day = now.strftime('%d')
print(day)  # 出力例: '01'

その他のフォーマット指定子

他にも多くのフォーマット指定子があります。

以下にいくつかの例を示します。

フォーマット説明
%H時(24時間表記、2桁)
%M分(2桁)
%S秒(2桁)
%fマイクロ秒(6桁)
%A曜日(英語表記)
%B月(英語表記)

具体的な例

年月日を YYYY-MM-DD 形式で取得する例

from datetime import datetime
now = datetime.now()
formatted_date = now.strftime('%Y-%m-%d')
print(formatted_date)  # 出力例: '2023-10-01'

年月日を YYYY/MM/DD 形式で取得する例

from datetime import datetime
now = datetime.now()
formatted_date = now.strftime('%Y/%m/%d')
print(formatted_date)  # 出力例: '2023/10/01'

年月日を「YYYY年MM月DD日」形式で取得する例

from datetime import datetime
now = datetime.now()
formatted_date = now.strftime('%Y年%m月%d日')
print(formatted_date)  # 出力例: '2023年10月01日'

以上が、Pythonで今日の日付を文字列で取得する方法です。

str()関数strftime()メソッドを使い分けることで、さまざまなフォーマットで日付を文字列に変換することができます。

応用例

日付と時刻を同時に取得する

Pythonでは、日付だけでなく時刻も同時に取得することができます。

これにはdatetimeモジュールのdatetimeクラスを使用します。

以下に具体的な方法を説明します。

datetime.datetime.now()とstrftime()の組み合わせ

datetime.datetime.now()メソッドを使用すると、現在の日付と時刻を取得できます。

これをstrftime()メソッドと組み合わせることで、任意のフォーマットで日付と時刻を文字列として取得することができます。

import datetime
# 現在の日付と時刻を取得
now = datetime.datetime.now()
# フォーマットを指定して文字列に変換
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_now)  # 例: 2023-10-05 14:30:00

上記のコードでは、%Yが4桁の年、%mが2桁の月、%dが2桁の日、%Hが2桁の時、%Mが2桁の分、%Sが2桁の秒を表しています。

フォーマット指定子を使ったカスタマイズ例

strftime()メソッドを使うことで、日付と時刻のフォーマットを自由にカスタマイズできます。

以下にいくつかの例を示します。

# 年月日と時刻を `YYYY/MM/DD HH:MM:SS` 形式で取得
formatted_now_1 = now.strftime("%Y/%m/%d %H:%M:%S")
print(formatted_now_1)  # 例: 2023/10/05 14:30:00
# 年月日と時刻を「YYYY年MM月DD日 HH時MM分SS秒」形式で取得
formatted_now_2 = now.strftime("%Y年%m月%d日 %H時%M分%S秒")
print(formatted_now_2)  # 例: 2023年10月05日 14時30分00秒
# 年月日と時刻を `DD-MM-YYYY HH:MM` 形式で取得
formatted_now_3 = now.strftime("%d-%m-%Y %H:%M")
print(formatted_now_3)  # 例: 05-10-2023 14:30

タイムゾーンを考慮した日付取得

グローバルなアプリケーションを開発する際には、タイムゾーンを考慮することが重要です。

Pythonではpytzモジュールを使用してタイムゾーンを扱うことができます。

pytzモジュールのインポート方法

まず、pytzモジュールをインストールする必要があります。

以下のコマンドを使用してインストールします。

pip install pytz

次に、pytzモジュールをインポートします。

import pytz

タイムゾーンを指定して日付を取得する方法

pytzモジュールを使用すると、特定のタイムゾーンの現在の日付と時刻を取得できます。

以下にその方法を示します。

import datetime
import pytz
# タイムゾーンを指定
timezone = pytz.timezone('Asia/Tokyo')
# 現在の日付と時刻を指定したタイムゾーンで取得
now_in_timezone = datetime.datetime.now(timezone)
# フォーマットを指定して文字列に変換
formatted_now_in_timezone = now_in_timezone.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_now_in_timezone)  # 例: 2023-10-05 14:30:00

上記のコードでは、Asia/Tokyoタイムゾーンの現在の日付と時刻を取得し、指定したフォーマットで文字列に変換しています。

他のタイムゾーンも同様にして取得できます。

例えば、America/New_Yorkタイムゾーンの現在の日付と時刻を取得する場合は、以下のようにします。

# タイムゾーンを指定
timezone_ny = pytz.timezone('America/New_York')
# 現在の日付と時刻を指定したタイムゾーンで取得
now_in_timezone_ny = datetime.datetime.now(timezone_ny)
# フォーマットを指定して文字列に変換
formatted_now_in_timezone_ny = now_in_timezone_ny.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_now_in_timezone_ny)  # 例: 2023-10-05 01:30:00

このようにして、pytzモジュールを使用することで、異なるタイムゾーンの現在の日付と時刻を簡単に取得することができます。

目次から探す