Pythonで現在時刻を取得する方法 文字列、日本時間、秒まで

Pythonのdatetimeモジュールの基本について

Pythonのdatetimeモジュールは、日付や時刻を扱うためのモジュールです。datetimeモジュールには、日付と時刻を表すdatetimeオブジェクトや、時間を表すtimeオブジェクトがあります。

datetime.now()関数による現在時刻の取得方法

datetime.now()関数を使うことで、現在時刻を取得することができます。

import datetime
now = datetime.datetime.now()
print(now)

上記のコードを実行すると、以下のような出力が得られます。

2022-01-01 12:34:56.789012

datetime.now()関数を用いた現在時刻の文字列化

datetime.now()関数で取得した現在時刻を、文字列として扱うこともできます。

import datetime
now = datetime.datetime.now()
str_now = now.strftime('%Y-%m-%d %H:%M:%S')
print(str_now)

上記のコードを実行すると、以下のような出力が得られます。

2022-01-01 12:34:56

日本時間への変換方法

datetimeモジュールでは、タイムゾーンを指定することで、現在時刻を任意のタイムゾーンに変換することができます。例えば、日本時間に変換する場合は、以下のようにします。

import datetime
import pytz
jst = pytz.timezone('Asia/Tokyo')
now = datetime.datetime.now(jst)
str_now = now.strftime('%Y-%m-%d %H:%M:%S')
print(str_now)

上記のコードを実行すると、以下のような出力が得られます。

2022-01-01 12:34:56

秒まで表示する方法

現在時刻を秒単位まで表示するには、以下のようにします。

import datetime
now = datetime.datetime.now()
str_now = now.strftime('%Y-%m-%d %H:%M:%S.%f')
print(str_now)

上記のコードを実行すると、以下のような出力が得られます。

2022-01-01 12:34:56.789012

よくあるエラーやトラブルとその対処法

現在時刻を取得する際に、以下のようなエラーが発生することがあります。

  • TypeError: ‘module’ object is not callable
  • ValueError: Invalid format string
  • AttributeError: ‘NoneType’ object has no attribute ‘strftime’

これらのエラーが発生する場合は、以下のように対処します。

  • TypeError: ‘module’ object is not callable
    datetimeモジュールのimport文で、datetime.datetime.now()を実行している可能性があります。正しい書き方は、datetime.datetime.now()です。
  • ValueError: Invalid format string
    strftime()メソッドの書式指定文字列に誤りがある場合があります。指定可能な書式指定文字列は、Python公式ドキュメントを参照してください。
  • AttributeError: ‘NoneType’ object has no attribute ‘strftime’
    datetime.now()関数がNoneを返している可能性があります。原因としては、タイムゾーンの指定が誤っている、あるいは引数を与え忘れている場合があります。タイムゾーンの指定方法については、前述の通りpytzモジュールを使用してください。

まとめ

Pythonのdatetimeモジュールを用いることで、現在時刻を取得することができます。datetime.now()関数を使って、現在時刻を取得し、strftime()メソッドを使って、文字列として扱うこともできます。また、タイムゾーンの指定を行うことで、現在時刻を任意のタイムゾーンに変換することができます。