高校物理160203 views
高校国語788336 views
高校化学2924392 views
雑学1473612 views
高校日本史190571 views
小学社会310485 views
英語613639 views
小学算数1200427 views
りんご209490 views
高校生物551766 views
Help
Tools
NewsSpreadsheetCalendarSlidesTier ListPen ToolIllustrationCrayonPixel ArtASCII ArtPerspectiveEndless StairsGraphMind MapER DiagramFamily TreeMemeCurved TextImage EditorMosaicRetro FilterPencil SketchOCR/HighlighterMakeup EditorFaviconVideo TrimmerScrolling VideoVideo TitleColor PickerColor ExtractorBonfireFireworksWater RippleWater SplashBreaking GlassWood GrainMarble TextureCSS ButtonIcon MakerBar ChartGrouped Bar ChartStacked Bar ChartPie ChartLine ChartArea ChartStacked Area ChartScatter Plot3D Bar Chart3D Pie ChartBar Chart RaceBubble ChartPopulation PyramidPictogramEarningsCandlestick ChartInvestment RiskMortgage SimulatorCalculatorMatrix CalculatorFunction GraphPolynomial ExpansionVenn DiagramField VisualizerRubik's Cube Group TheoryTraveling SalesmanVoronoi and DelaunayFractalColumn ArithmeticDraw Math FiguresArithmetic AnimationArithmetic Word ProblemsCounting with Tree DiagramsCube NetsCross SectionsMotion PathMechanicsWavesLight and LensesThermodynamicsHow Semiconductors WorkMolecular StructuresAtomic OrbitalsElectrochemical CellsChemical EquilibriumCrystal LatticesBuffer pHComplex IonsDNA Double HelixCell DivisionMembrane ChannelsNerve ImpulseRock ClassificationWeatherConstellationsSolar and Lunar Eclipses3D ModelingFloor PlanSeismic StructuresIntersection TurnMaglevCooking AnimationOrigamiLive Viewer CountGeoJSON MapRailway MapPopulation MapCrime MapLand Price MapSchool MapShrine and Castle MapHouse of Representatives MapWord MapSolitaireReversiHakoiri MusumeChessHamburgerRippleSlide Puzzle MakerNeon PinballNovel MakerJapanese Typing PracticePiano Score EditorMusic Theory

English

Python で UNIX タイムスタンプと datetime を相互変換する

UNIX タイムスタンプは、1970年1月1日 00:00:00 UTC からの経過秒数で時刻を表す形式です。API やデータベースでよく使われるため、datetime との相互変換を覚えておくと便利です。

UNIX タイムスタンプとは

UNIX タイムスタンプ(エポック秒)は、世界中で統一された時刻表現として広く使われています。

UNIX タイムスタンプ

1970年1月1日からの経過秒数。例: 1705312200

datetime

人間が読める形式。例: 2025-01-15 10:30:00

数値1つで時刻を表せるため、データの保存や通信で重宝されます。

datetime から UNIX タイムスタンプへ

timestamp() メソッドで変換できます。

from datetime import datetime

dt = datetime(2025, 1, 15, 10, 30, 0)
unix_time = dt.timestamp()

print(unix_time)  # 1736908200.0

戻り値は浮動小数点数で、小数部分はマイクロ秒を表します。整数が欲しい場合は int() で変換してください。

UNIX タイムスタンプから datetime へ

fromtimestamp() クラスメソッドで変換できます。

from datetime import datetime

unix_time = 1736908200
dt = datetime.fromtimestamp(unix_time)

print(dt)  # 2025-01-15 10:30:00

このメソッドはローカルタイムゾーンで解釈します。日本で実行すれば JST(UTC+9)として扱われるわけです。

UTC で扱いたい場合

タイムゾーンを明示的に UTC にしたい場合は、timezone.utc を指定します。

from datetime import datetime, timezone

unix_time = 1736908200

# UTC として変換
dt_utc = datetime.fromtimestamp(unix_time, tz=timezone.utc)
print(dt_utc)  # 2025-01-15 01:30:00+00:00

# ローカル(JST)として変換
dt_local = datetime.fromtimestamp(unix_time)
print(dt_local)  # 2025-01-15 10:30:00

サーバー間でデータをやり取りする際は、UTC で統一しておくのが一般的です。

utcfromtimestamp は非推奨

Python 3.12 以降、utcfromtimestamp() は非推奨になりました。

from datetime import datetime, timezone

unix_time = 1736908200

# 非推奨(Python 3.12 で DeprecationWarning)
# dt = datetime.utcfromtimestamp(unix_time)

# 推奨される書き方
dt = datetime.fromtimestamp(unix_time, tz=timezone.utc)
print(dt)

タイムゾーン情報を持たない「ナイーブ」な UTC 時刻は混乱の元になるため、明示的にタイムゾーンを指定する方法が推奨されています。

現在時刻の UNIX タイムスタンプ

現在時刻を UNIX タイムスタンプで取得するには、time モジュールも使えます。

import time
from datetime import datetime

# time モジュールを使う方法
unix_time = time.time()
print(unix_time)

# datetime を経由する方法
unix_time = datetime.now().timestamp()
print(unix_time)

どちらも同じ結果になります。すでに datetime を使っているコードなら timestamp() を、シンプルに現在のタイムスタンプだけ欲しいなら time.time() を使うとよいでしょう。