Pythonで日本標準時(JST)を取得する。

Python

Pythonで日本標準時(JST)を取得するには?

プログラム処理中にログファイルに正確な時間を記録する必要がある場合等で日本標準時(JST)を取得したい場合があります。
本記事では、Pythonで日本標準時(JST)を取得する方法を紹介します。

Pythonで日本標準時(JST)を取得するサンプルコード

サンプルコードを紹介します。

# pip install ntplib
import ntplib # NTP(Network Time Protocol)を使ってインターネット上のサーバーから正確な時刻を取得するためのライブラリ
from datetime import datetime, timezone, timedelta

def get_jst_time():
    """
    NTPサーバーから時刻を取得し、JST(日本標準時)に変換して返す関数。

    Returns:
        datetime: JST(日本標準時)のdatetimeオブジェクト。
    """
    try:
        # NTPクライアントの作成
        ntp_client = ntplib.NTPClient()
        
        # NTPサーバーからの時刻を取得
        # NTPサーバーとしてはデフォルトのpool.ntp.org(各地域にあるサーバーの中から自動的に最適なものを選んで利用する仕組み)を使用 NTPプロトコルversion3を利用
        response = ntp_client.request('pool.ntp.org', version=3)
        # 国立研究開発法人情報通信研究機構のサーバーから取得の場合
        # response = ntp_client.request('ntp.nict.jp', version=3)
        
        # UTC時間を取得
        utc_time = datetime.fromtimestamp(response.tx_time, tz=timezone.utc)
        
        # UTC時間をJSTに変換(UTC+9時間)
        jst_time = utc_time + timedelta(hours=9)
        
        # JSTを戻す
        return jst_time
    
    except Exception as e:
        # エラーが発生した場合、エラーメッセージを表示
        print(f"Error: {e}")
        return None

# 関数のテスト
if __name__ == "__main__":
    jst_time = get_jst_time()
    if jst_time:
        print(f"JST : {jst_time.strftime('%Y-%m-%d %H:%M:%S')}")
    else:
        print("JST の取得に失敗しました")

実行結果

JST : 2024-10-31 15:28:28

この例では、pool.ntp.org(各地域にあるサーバーの中から自動的に最適なものを選んで利用する仕組み)からUTC 協定世界時を取得してUTC+9時間の処理を行い、JST 日本標準時を算出しています。 

最後に

以上がPythonで日本標準時(JST)を取得する方法です。

タイムスタンプ等で正確な時間を利用する場合があると思いますので試してみてはいかがでしょうか。

コメント

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