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

Pythonで日時をUTCタイムスタンプに変換する方法を徹底解説

Pythonでは、datetimeモジュールを使うことで、日時(datetime)をUTCタイムスタンプへ簡単に変換できます。すでにdatetimeオブジェクトがUTCとして作成されている場合は、timestamp()メソッドを呼び出すだけでUTCタイムスタンプを取得できます。このメソッドは、エポック(1970年1月1日00:00:00 UTC)からの経過秒数を返します。

一方、datetimeオブジェクトがローカルタイムゾーンで作成されている場合は、まずreplace()メソッドでタイムゾーン情報をUTCに置き換えてから、タイムスタンプを取得する必要があります。

例:timezone.utc を使った変換

from datetime import datetime, timezone

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

出力

上記のコードを実行すると、次の出力が得られます。

1445212800.0

Python 2での代替方法:total_seconds() を使う

Python 2にはtimestamp()メソッドが存在しないため、代わりにtotal_seconds()関数を使用してエポックからの総秒数を計算します。具体的には、対象の日時から1970年1月1日のdatetimeを引いた差分(timedeltaオブジェクト)に対して、total_seconds()を呼び出すことで、経過秒数を浮動小数点数として取得できます。

例:日時の差分から計算する方法

from datetime import datetime

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

出力

こちらの方法でも、先ほどと同じ結果が得られます。

1445212800.0

まとめ

  • Python 3以降なら、datetime.replace(tzinfo=timezone.utc).timestamp()が最もシンプルで推奨される方法です。
  • Python 2環境では、エポックとの差分に対してtotal_seconds()を使うことで同様の結果が得られます。
  • どちらの方法も、指定した日時「2015年10月19日」に対して 1445212800.0 秒という同一のタイムスタンプを返します。
  1. 【Python入門】strptimeを使って日付文字列をdateオブジェクトに変換する方法

    Pythonでは、datetimeモジュールのstrptime関数を使うことで、文字列形式の日付データを簡単にdatetimeオブジェクトへ変換できます。この関数には、変換したい日付の文字列と、その日付がどのような書式で記述されているかを示すフォーマット指定子の2つの引数を渡します。基本的な使い方(サンプルコード)以下の例では、「2017年12月29日」という日付が「29122017」という文字列として表現されている場合に、それを日付オブジェクトへ変換しています。import datetime date_str = 29122017 # 日付文字列(2017年12月29日) format

  2. Pythonで文字列をバイナリ(2進数)に変換する方法をわかりやすく解説

    Pythonで文字列をバイナリに変換する基本の考え方Pythonで文字列をバイナリ(2進数)表現に変換するには、文字列内の各文字を1つずつ取り出し、それぞれを2進数へ変換したうえで、結果をひとつの文字列として連結します。各文字の文字コードは ord() 関数で取得でき、format() 関数に「b」フォーマット指定子を渡すことで、簡単に2進数形式へ整形できます。format() と ord() を使った変換方法最もシンプルなのが、format(ord(x), b) を使って各文字 x を2進数の文字列に変換する方法です。次の例では、文字列 hello world の各文字をスペース区切りのバイ