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 秒という同一のタイムスタンプを返します。
-
【Python入門】strptimeを使って日付文字列をdateオブジェクトに変換する方法
Pythonでは、datetimeモジュールのstrptime関数を使うことで、文字列形式の日付データを簡単にdatetimeオブジェクトへ変換できます。この関数には、変換したい日付の文字列と、その日付がどのような書式で記述されているかを示すフォーマット指定子の2つの引数を渡します。基本的な使い方(サンプルコード)以下の例では、「2017年12月29日」という日付が「29122017」という文字列として表現されている場合に、それを日付オブジェクトへ変換しています。import datetime date_str = 29122017 # 日付文字列(2017年12月29日) format
-
Pythonで文字列をバイナリ(2進数)に変換する方法をわかりやすく解説
Pythonで文字列をバイナリに変換する基本の考え方Pythonで文字列をバイナリ(2進数)表現に変換するには、文字列内の各文字を1つずつ取り出し、それぞれを2進数へ変換したうえで、結果をひとつの文字列として連結します。各文字の文字コードは ord() 関数で取得でき、format() 関数に「b」フォーマット指定子を渡すことで、簡単に2進数形式へ整形できます。format() と ord() を使った変換方法最もシンプルなのが、format(ord(x), b) を使って各文字 x を2進数の文字列に変換する方法です。次の例では、文字列 hello world の各文字をスペース区切りのバイ