Pythonのdatetime.fromtimestampを使ったタイムスタンプ変換ガイド!初心者でもわかる日付操作
生徒
「Pythonでタイムスタンプを普通の年月日みたいな日付に変換したいんですけど、どうすればいいですか?」
先生
「Pythonでは、datetime.fromtimestamp() という仕組みを使うと、数字のタイムスタンプを簡単に人が読める日付に変えられますよ。」
生徒
「fromtimestampって名前は聞いたことありますけど、どんなタイミングで使うんですか?」
先生
「たとえばスマホのアプリやWebサービスでは、保存のときに '秒の数字' で時刻を扱うことが多いんです。そこから実際の年月日に戻すときに使うんですよ。」
1. タイムスタンプとは?初心者向けに簡単に理解しよう
Pythonの日時操作を理解するためには、まず「タイムスタンプ」という言葉を知っておく必要があります。タイムスタンプとは、ある時刻を「1970年1月1日から何秒経ったか」を数字で表したものです。これは世界中のコンピューターで共通して使われている数え方で、アプリ・Webサービス・データベースなどで幅広く使われています。
たとえば、1700000000 のような長い数字がタイムスタンプです。見ただけでは何年何月かわかりませんが、datetime.fromtimestamp() を使えば一瞬で日付に変換できます。
2. datetime.fromtimestamp() の基本の使い方
datetime.fromtimestamp() は、タイムスタンプ(秒数)を受け取って、人が読める datetime 型に変換する関数です。まずは基本の使い方を見てみましょう。
from datetime import datetime
ts = 1700000000
dt = datetime.fromtimestamp(ts)
print(dt)
実行すると、次のように変換された日付が表示されます。
2023-11-15 20:53:20
これで、ただの数字のように見えていたタイムスタンプが、具体的な年月日と時刻に変換されました。
3. 日付のフォーマットを変更する方法
変換できたあと、「年月日だけを見たい」「日本のよくある表記にしたい」ということがあります。そんなときは、strftime() を使うと便利です。これは日付の並び順を自由に指定できる仕組みです。
from datetime import datetime
ts = 1700000000
dt = datetime.fromtimestamp(ts)
formatted = dt.strftime("%Y/%m/%d %H:%M:%S")
print(formatted)
2023/11/15 20:53:20
%Y は年、%m は月、%d は日を表すルールです。これらは「フォーマット指定子」と呼ばれ、組み合わせることで好きな表示スタイルを作れます。
4. 日本時間に変換したいときの注意点
datetime.fromtimestamp() は、基本的に「使っているパソコンのタイムゾーン」を基準に変換します。日本の標準時間は UTC+9 と呼ばれる時差を使っているため、海外のサーバーから送られてくるタイムスタンプはずれていることがあります。
その場合、Python のタイムゾーンを指定して変換します。
from datetime import datetime, timezone, timedelta
ts = 1700000000
jst = timezone(timedelta(hours=9))
dt = datetime.fromtimestamp(ts, jst)
print(dt)
2023-11-15 20:53:20+09:00
このように timezone を使うことで、日本時間に合わせた正確な変換ができるようになります。
5. 日付を逆にタイムスタンプへ変換する方法
Python の日時操作では、タイムスタンプから日付に変換するだけでなく、日付からタイムスタンプに戻す場面もあります。そんなときに使うのが timestamp() です。
from datetime import datetime
dt = datetime(2023, 11, 15, 20, 53, 20)
ts = dt.timestamp()
print(ts)
1700000000.0
このように、双方向の変換を行うことができるため、保存や比較がとても便利になります。
6. よくあるエラーと初心者がつまずくポイント
タイムスタンプを扱うときに初心者がよくつまずくポイントとして、桁数の違いがあります。Python の fromtimestamp() は「秒」のタイムスタンプを前提にしていますが、スマホや一部のWebサービスでは「ミリ秒」で保存されていることがあります。
ミリ秒のタイムスタンプは 1000 で割る必要があります。
from datetime import datetime
ts_ms = 1700000000000 # ミリ秒
ts = ts_ms / 1000 # 秒に変換
dt = datetime.fromtimestamp(ts)
print(dt)
こうすることで、正しい日付が表示されます。桁数が違うと変な日付になってしまうため、事前に確認することが大切です。
7. 日時操作とデータ分析でも使われるタイムスタンプの重要性
Python の日時操作はデータ分析でもよく使われます。データベースにはタイムスタンプで記録されているケースが多く、fromtimestamp() を使って読みやすい日付に変換し、そこから年月別の集計や日単位の分析を行います。
タイムスタンプが数字で保存される理由は、計算するときに扱いやすいからです。日付を比べたり、差を計算したりするときも、数字であるほうがずっと簡単です。