Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで日付(datetime)をUnixタイムスタンプに変換する方法

Pythonでは、標準ライブラリのdatetimeモジュールを使って、日時オブジェクトをUnixタイムスタンプ(UTCタイムスタンプ)に変換できます。すでにUTCのdatetimeオブジェクトを持っている場合は、timestamp()メソッドを呼び出すだけで、エポック(1970年1月1日 0時0分0秒 UTC)からの経過秒数を取得できます。

一方、datetimeオブジェクトがローカルタイムゾーンの状態になっている場合は、まずreplace()メソッドなどでタイムゾーン情報を明示的に設定してから、タイムスタンプを取得する必要があります。タイムゾーン情報がないまま変換すると、意図しない値になる可能性があるため注意しましょう。

timestamp()メソッドを使う方法(Python 3)

以下の例では、2015年10月19日の日付に対してUTCタイムゾーンを設定し、その上でタイムスタンプを取得しています。

from datetime import datetime, timezone

dt = datetime(2015, 10, 19)
timestamp = dt.replace(tzinfo=timezone.utc).timestamp()
print(timestamp)

実行結果

1445212800.0

total_seconds()を使う方法(Python 2向け)

Python 2にはtimestamp()メソッドが存在しないため、代わりにtotal_seconds()関数を使用します。この方法では、対象の日時からエポックである1970年1月1日を差し引き、その差分を秒数として計算します。

from datetime import datetime

dt = datetime(2015, 10, 19)
timestamp = (dt - datetime(1970, 1, 1)).total_seconds()
print(timestamp)

実行結果

1445212800.0

まとめ

Python 3以降では、タイムゾーン情報を付与したdatetimeオブジェクトに対してtimestamp()メソッドを使うのが最もシンプルで推奨される方法です。レガシーなPython 2環境では、エポックとの差分をtotal_seconds()で計算する方法が有効です。どちらのアプローチでも、同じ結果「1445212800.0」が得られることを確認できます。

  1. Pythonで文字列から日付を抽出・解析する方法

    文字列から日付を抽出するには、まずその文字列内で日付がどのような形式(フォーマット)で表現されているかを把握しておく必要があります。基本的なアプローチとしては、正規表現(reモジュール)で日付部分を取り出し、datetime.datetime.strptime() で解析(パース)するという流れになります。例えば、文字列中に「YYYY-MM-DD」形式の日付が含まれている場合、以下のコードで抽出と解析ができます。コード例import re import datetime s = I have a meeting on 2018-12-10 in New York match = re.sea

  2. Unixエポックタイムスタンプとは?エポック時間を日付に変換する方法を徹底解説

    コンピュータは、人間が使う自然言語(英語など)をそのまま理解できないことをご存知でしょうか?私たちが入力した命令はすべて、CPUが読み取って処理を実行する前に、バイナリコード(0と1だけで構成される2進数)へと変換されます。そして、処理結果も再び人間が読める形式へと翻訳されるのです。ここで一つ問題が生じます。「日付」は単純な0と1だけでは表現しきれない情報だという点です。この課題を解決するため、コンピュータ科学者たちは、あらゆる日付を「共通の基準点から経過した秒数」に変換する方式を採用しました。コンピュータに日付を与えると、内部では秒数へ変換され、時刻の起点となる最初の1秒から何秒経過したかが