Pythonを用いてアプリケーション開発やログ管理を行う際、現在時刻の取得は必須の処理と言えます。
この記事では、標準ライブラリである datetime を中心に、Pythonで現在時刻を文字列として取得する方法や、ミリ秒・秒単位まで詳細に取得するテクニック、さらには日本時間の扱いまでステップバイステップで詳しく解説します。
![]() 執筆者:マヒロ |
|
- OS:Windows 11 / macOS Sequoia
- IDE:Visual Studio / VS Code / IntelliJ IDEA
- その他:Chrome DevTools / 各言語最新安定版
※本メディアでは、上記環境にてコードの動作と情報の正確性を検証済みです。
datetimeモジュールで現在時刻を取得する基本手法
Pythonで日付や時間を扱うための最も標準的な手段は、datetime モジュールを使用することです。
このモジュールを使いこなすことで、プログラム内のあらゆる場面で正確な時間情報を扱えるようになります。
ここでは、現在時刻を取得する最も基本的な方法と、それを自由な形式に変換する手法について見ていきましょう。
datetime.now()による基本的な現在時刻の取得
from datetime import datetime
# 現在のローカル時刻を取得
now = datetime.now()
print("取得したオブジェクト:", now)
print("型:", type(now))
実行結果
取得したオブジェクト: 2026-02-11 13:05:45.123456
型: <class 'datetime.datetime'>
このプログラムでは、まず datetime モジュールから datetime クラスをインポートし、その now() メソッドを呼び出すことで実行した瞬間の時刻を取得しています。
取得されたデータは datetime オブジェクトという特殊な型になっており、年、月、日、時、分、秒、そしてマイクロ秒といった情報を保持しています。
単に画面に表示するだけでなく、プログラム内部で時間の計算や比較を行うための基盤となる非常に重要なデータ形式です。
現在時刻を文字列として取得するフォーマット指定
from datetime import datetime
now = datetime.now()
# 任意のフォーマットに変換
formatted_time = now.strftime("%Y/%m/%d %H:%M:%S")
print("フォーマット後の現在時刻:", formatted_time)
実行結果
フォーマット後の現在時刻: 2026/02/11 13:05:45
取得した時刻をユーザーに表示したり、ログファイルに記録したりする際には、人間が読みやすい形式に変換する必要があります。
このコードで使用している strftime() メソッドは、指定した書式コードに基づいてPythonの現在時刻を文字列へと変換する役割を担っています。
例えば %Y は4桁の西暦、%m は月、%d は日を指しており、これらを組み合わせることで「2026/02/11」といった馴染みのある形式を自由自在に生成できるのが大きな特徴です。
これがPythonで現在時刻のフォーマットを制御する最も一般的な手法となります。
特定の形式や精度で現在時刻を取得する方法
開発の現場では、システム要件によって非常に高い精度での時間計測が必要になったり、特定の命名規則に従った文字列が必要になったりします。
特にファイル管理やデータベースのキー作成においてよく使われる、秒以下の詳細な情報や固定長の文字列を取得する方法について解説します。
ファイル名に便利なyyyymmddhhmmss形式での取得
from datetime import datetime
now = datetime.now()
# 記号を含まない形式(yyyymmddhhmmss)に変換
timestamp_str = now.strftime("%Y%m%d%H%M%S")
print("yyyymmddhhmmss形式の文字列:", timestamp_str)
実行結果
yyyymmddhhmmss形式の文字列: 20260211130545
ファイルを自動生成して保存する場合、ファイル名にスラッシュやコロンを含めるとエラーの原因になることが多いため、このように数字を連結した形式が好まれます。
このソースコードでは、strftime メソッドに渡す引数から記号を排除することで、Pythonで現在時刻をyyyymmddhhmmssという固定長の数値文字列として抽出しています。
この手法を用いることで、ファイル名を時系列順に並べやすくし、データの管理性を劇的に向上させることが可能になります。
ミリ秒や秒単位まで詳細に取得する
from datetime import datetime
now = datetime.now()
# 秒まで(小数なし)とミリ秒を含む形式
seconds_only = now.strftime("%H:%M:%S")
with_milliseconds = now.strftime("%H:%M:%S.%f")[:-3]
print("時刻(秒まで):", seconds_only)
print("時刻(ミリ秒含む):", with_milliseconds)
実行結果
時刻(秒まで): 13:05:45
時刻(ミリ秒含む): 13:05:45.123
パフォーマンスの測定や高精度なロギングが必要な場合は、秒よりも細かい単位が求められます。
Pythonの %f という書式コードはマイクロ秒(6桁)を出力しますが、実務でよく使われるのはミリ秒(3桁)です。
このプログラムでは、スライス([:-3])というテクニックを利用して、マイクロ秒の下3桁を切り捨てることで、正確にPythonで現在時刻をミリ秒まで表現しています。
また、単に現在時刻を秒まで取得したい場合は %S で止めることで、不要な情報を省いたシンプルな出力を得ることができます。
タイムゾーンを考慮した日本時間(JST)の取得
クラウドサーバーや海外の環境でPythonを実行すると、システム時刻が世界標準時(UTC)に設定されていることがよくあります。
そのため、日本国内向けのシステムを構築する際には、明示的にタイムゾーンを指定して現在時刻を取得する必要があります。
ここでは、標準の zoneinfo モジュールを使用して、正確なPythonでの現在時刻の日本時間取得方法を見ていきましょう。
標準機能(ZoneInfo)による日本時間の取得
from datetime import datetime
from zoneinfo import ZoneInfo
# 日本時間(JST)を指定して取得
now_jst = datetime.now(ZoneInfo("Asia/Tokyo"))
print("日本時間での現在時刻:", now_jst)
実行結果
日本時間での現在時刻: 2026-02-11 13:05:45.123456+09:00
このソースコードでは、Python 3.9以降で標準搭載された zoneinfo モジュールを活用しています。
ZoneInfo("Asia/Tokyo") を datetime.now() の引数に渡すことで、実行環境の設定に依存せず、常に日本標準時(JST)に基づいた時刻を取得しています。
出力結果の最後に表示されている +09:00 は、UTC(世界標準時)から9時間進んでいることを示すタイムゾーン情報です。
この情報を保持した状態(awareオブジェクト)で時間を扱うことで、サーバーの場所を問わず正確なスケジュール管理やデータ記録が実現できるようになります。
時間データ(datetime)の操作と詳細な比較
時刻を取得した後、特定の処理のために「時間(時・分・秒)だけ」を取り出したり、別の時間と比較したりしたい場面があります。
複雑な計算を自分で行わなくても、Pythonのオブジェクト指向的な機能を活用すれば、スマートにこれらの操作を完結させることが可能です。
datetimeオブジェクトから時間だけを取り出す
from datetime import datetime
now = datetime.now()
# 時刻部分のみを抽出
time_part = now.time()
print("時間オブジェクト:", time_part)
print("型:", type(time_part))
実行結果
時間オブジェクト: 13:05:45.123456
型: <class 'datetime.time'>
datetime オブジェクトには日付と時刻の両方が含まれていますが、time() メソッドを呼び出すことで、日付情報を切り離した time オブジェクトを生成できます。
これがPythonのdatetimeから時間だけを取得する最も簡潔な方法です。
業務開始時間や終了時間のチェックなど、日付には依存せず「何時何分か」という情報のみを純粋に扱いたい場合に非常に重宝する機能であり、データの軽量化にも繋がります。
時間データのみを比較するテクニック
from datetime import datetime, time
now_time = datetime.now().time()
# 比較対象の時間を定義(例:12時00分)
border_time = time(12, 0, 0)
if now_time > border_time:
print("現在は午後です")
else:
print("現在は午前です")
実行結果
現在は午後です
このプログラムでは、取得した現在の時刻と、あらかじめ定義した特定の時刻を比較しています。
datetime オブジェクト同士を比較する場合、日付が異なると意図した結果にならないことがありますが、このように time オブジェクトに変換してから比較を行うことで、Pythonで時間だけの比較を正確に行うことができます。
異なる日のデータであっても「どちらが早い時間か」という判定が直感的に行えるため、時間帯による処理の分岐(夜間のみ実行するなど)を実装する際に非常に強力な手段となります。
Pythonのスキルを活かして年収を上げる方法
以上、Pythonで現在時刻を取得する方法について解説してきました。
Pythonエンジニアの需要は非常に高いため、転職によって数十万円の年収アップはザラで、100万円以上年収が上がることも珍しくありません。
なお、転職によって年収を上げたい場合は、エンジニア専門の転職エージェントサービスを利用するのが最適です。
転職エージェントも副業エージェントも、登録・利用は完全無料なので、どんな求人や副業案件があるのか気になる方は、気軽に利用してみるとよいでしょう。
| 年収アップにこだわりたい方 (平均アップ額138万円の実績) | テックゴー |
| 未経験・経験者問わず幅広く探したい方 | ユニゾンキャリア |
| 業界に精通した担当者に相談したい方 | キッカケエージェント |
| ゲーム業界への転職を志望する方 | ファミキャリ |
| エンジニア未経験からキャリアを築く方 | イーチキャリア |


