【Python】現在時刻をミリ秒で取得・変換する

この記事では、Pythonの標準ライブラリである datetimetime を使って、現在時刻を取得し、ミリ秒単位で表示する方法をわかりやすく解説します。

また、時刻のフォーマット方法やタイムスタンプの生成、処理時間の計測方法についても紹介します。

初心者の方でも理解しやすいように、サンプルコードとその実行結果を交えて説明しますので、ぜひ最後までご覧ください。

目次から探す

Pythonでの時間操作の基本

Pythonで時間を操作するためには、主に2つの標準ライブラリを使用します。

それが datetime モジュールと time モジュールです。

これらのモジュールを使うことで、現在時刻の取得や時間の計算、フォーマットの変更などが簡単に行えます。

まずは、それぞれのモジュールについて詳しく見ていきましょう。

Pythonの標準ライブラリ datetime

datetime モジュールの概要

datetime モジュールは、日付や時間を操作するための多機能なモジュールです。

このモジュールを使うことで、日付や時間の計算、フォーマットの変更、タイムゾーンの操作などが簡単に行えます。

datetime モジュールには、主に以下のクラスが含まれています。

クラス名説明
datetime.date年、月、日を扱うクラス
datetime.time時、分、秒、マイクロ秒を扱うクラス
datetime.datetime日付と時間を扱うクラス
datetime.timedelta時間の差を扱うクラス
datetime.tzinfoタイムゾーン情報を扱うクラス

datetime モジュールの基本的な使い方

datetime モジュールを使って現在時刻を取得する方法を見てみましょう。

以下のコードは、現在の日時を取得し、フォーマットを変更する例です。

import datetime
# 現在の日時を取得
now = datetime.datetime.now()
# 現在の日時を表示
print("現在の日時:", now)
# フォーマットを変更して表示
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
print("フォーマット変更後の日時:", formatted_now)

このコードを実行すると、以下のような出力が得られます。

現在の日時: 2023-10-01 12:34:56.789123
フォーマット変更後の日時: 2023-10-01 12:34:56

datetime.datetime.now()メソッドを使うことで、現在の日時を取得できます。

また、strftimeメソッドを使うことで、日時のフォーマットを変更することができます。

time モジュールの紹介

time モジュールの概要

time モジュールは、時間に関する操作を行うためのモジュールです。

このモジュールを使うことで、エポックタイム(1970年1月1日からの経過秒数)の取得や、時間のスリープ、時間のフォーマット変更などが行えます。

time モジュールは、システムのクロックに依存しているため、精度が高い時間計測が可能です。

time モジュールの基本的な使い方

time モジュールを使って現在時刻を取得する方法を見てみましょう。

以下のコードは、エポックタイムを取得し、フォーマットを変更する例です。

import time
# エポックタイムを取得
epoch_time = time.time()
# エポックタイムを表示
print("エポックタイム:", epoch_time)
# フォーマットを変更して表示
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(epoch_time))
print("フォーマット変更後の日時:", formatted_time)

このコードを実行すると、以下のような出力が得られます。

エポックタイム: 1696154096.789123
フォーマット変更後の日時: 2023-10-01 12:34:56

time.time()メソッドを使うことで、エポックタイムを取得できます。

また、time.strftimeメソッドを使うことで、エポックタイムを人間が読みやすい形式にフォーマットすることができます。

以上が、Pythonでの時間操作の基本的な方法です。

次のセクションでは、現在時刻をミリ秒単位で取得する方法について詳しく解説します。

現在時刻を取得する方法

Pythonでは、現在時刻を取得するために主に2つのモジュールを使用します。

それが datetime モジュールと time モジュールです。

それぞれのモジュールを使った現在時刻の取得方法について詳しく見ていきましょう。

datetime モジュールを使った現在時刻の取得

datetime.datetime.now() の使い方

datetime モジュールを使うと、現在の日時を簡単に取得することができます。

以下のコードは、datetime.datetime.now() を使って現在の日時を取得する例です。

import datetime
# 現在の日時を取得
now = datetime.datetime.now()
print(now)

このコードを実行すると、以下のような出力が得られます。

2023-10-05 14:23:45.123456

このように、datetime.datetime.now() を使うと、年、月、日、時、分、秒、マイクロ秒まで含まれた現在の日時が取得できます。

現在時刻のフォーマット

取得した日時を特定のフォーマットで表示したい場合は、strftimeメソッドを使用します。

以下の例では、日時を YYYY-MM-DD HH:MM:SS の形式で表示します。

import datetime
# 現在の日時を取得
now = datetime.datetime.now()
# フォーマットを指定して表示
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_now)

このコードを実行すると、以下のような出力が得られます。

2023-10-05 14:23:45

strftimeメソッドを使うことで、日時の表示形式を自由にカスタマイズすることができます。

time モジュールを使った現在時刻の取得

time.time() の使い方

time モジュールを使って現在時刻を取得する方法もあります。

time.time() を使うと、エポックタイム(1970年1月1日 00:00:00 UTC)からの経過秒数を取得できます。

import time
# 現在の時刻を取得
current_time = time.time()
print(current_time)

このコードを実行すると、以下のような出力が得られます。

1696501425.123456

このように、time.time() を使うと、エポックタイムからの経過秒数が浮動小数点数で返されます。

エポックタイムとは何か

エポックタイムとは、コンピュータシステムで時間を計測するための基準となる時刻のことです。

Unix系システムでは、エポックタイムは1970年1月1日 00:00:00 UTCを指します。

time.time() はこのエポックタイムからの経過秒数を返すため、プログラム内での時間計測やタイムスタンプの生成に非常に便利です。

例えば、エポックタイムからの経過秒数を人間が読みやすい形式に変換するには、time.ctime() を使用します。

import time
# 現在の時刻を取得
current_time = time.time()
# 読みやすい形式に変換
readable_time = time.ctime(current_time)
print(readable_time)

このコードを実行すると、以下のような出力が得られます。

Thu Oct  5 14:23:45 2023

このように、time モジュールを使うことで、エポックタイムからの経過秒数を簡単に取得し、読みやすい形式に変換することができます。

ミリ秒での時刻取得

Pythonでは、datetime モジュールと time モジュールを使って現在時刻をミリ秒単位で取得することができます。

以下では、それぞれの方法について詳しく解説します。

datetime モジュールでミリ秒を取得する

datetime.datetime.now().microsecond の使い方

datetime モジュールの datetimeクラスを使うと、現在時刻を取得することができます。

さらに、microsecond 属性を使うことで、現在時刻のマイクロ秒部分を取得することができます。

from datetime import datetime
# 現在時刻を取得
now = datetime.now()
# マイクロ秒を取得
microseconds = now.microsecond
print(f"現在時刻: {now}")
print(f"マイクロ秒: {microseconds}")

このコードを実行すると、現在時刻とそのマイクロ秒部分が表示されます。

ミリ秒への変換方法

マイクロ秒は1秒の100万分の1ですが、ミリ秒は1秒の1000分の1です。

したがって、マイクロ秒をミリ秒に変換するには、マイクロ秒の値を1000で割る必要があります。

# マイクロ秒をミリ秒に変換
milliseconds = microseconds / 1000
print(f"ミリ秒: {milliseconds}")

このようにして、datetime モジュールを使って現在時刻のミリ秒部分を取得することができます。

time モジュールでミリ秒を取得する

time.time() を使ったミリ秒の計算

time モジュールの time()関数を使うと、エポック(1970年1月1日 00:00:00 UTC)からの経過時間を秒単位で取得することができます。

この値は浮動小数点数で返されるため、小数点以下の部分を使ってミリ秒を計算することができます。

import time
# エポックからの経過時間を取得
epoch_time = time.time()
print(f"エポックからの経過時間(秒): {epoch_time}")

ミリ秒への変換方法

エポックからの経過時間をミリ秒に変換するには、秒単位の値に1000を掛けるだけです。

# エポックからの経過時間をミリ秒に変換
milliseconds = epoch_time * 1000
print(f"エポックからの経過時間(ミリ秒): {milliseconds}")

このようにして、time モジュールを使って現在時刻をミリ秒単位で取得することができます。

以上の方法を使うことで、Pythonで現在時刻をミリ秒単位で取得し、必要に応じて変換することができます。

どちらの方法も簡単に実装できるため、用途に応じて使い分けると良いでしょう。

ミリ秒を含む時刻のフォーマット

Pythonでは、時刻をフォーマットするための便利なメソッドがいくつか用意されています。

ここでは、datetime モジュールと time モジュールを使って、ミリ秒を含む時刻のフォーマット方法について解説します。

datetime モジュールでのフォーマット

strftime メソッドの使い方

datetime モジュールの strftimeメソッドを使うと、日時を指定したフォーマットで文字列に変換することができます。

以下は strftimeメソッドの基本的な使い方の例です。

from datetime import datetime
# 現在の日時を取得
now = datetime.now()
# フォーマットを指定して文字列に変換
formatted_time = now.strftime('%Y-%m-%d %H:%M:%S')
print(formatted_time)  # 例: 2023-10-01 12:34:56

strftimeメソッドでは、以下のようなフォーマット指定子を使用します。

フォーマット指定子説明
%Y年 (4桁)
%m月 (2桁)
%d日 (2桁)
%H時 (24時間表記、2桁)
%M分 (2桁)
%S秒 (2桁)

ミリ秒を含むフォーマットの例

datetime モジュールでは、ミリ秒を直接フォーマット指定子として使用することはできませんが、microsecond 属性を使ってミリ秒を取得し、それを文字列に追加することができます。

from datetime import datetime
# 現在の日時を取得
now = datetime.now()
# ミリ秒を取得
milliseconds = now.microsecond // 1000
# フォーマットを指定して文字列に変換
formatted_time = now.strftime('%Y-%m-%d %H:%M:%S') + f'.{milliseconds:03d}'
print(formatted_time)  # 例: 2023-10-01 12:34:56.789

この例では、microsecond 属性を使ってミリ秒を取得し、それをフォーマットされた文字列に追加しています。

time モジュールでのフォーマット

time.strftime メソッドの使い方

time モジュールの strftimeメソッドも、datetime モジュールの strftimeメソッドと同様に、日時を指定したフォーマットで文字列に変換することができます。

以下は time.strftimeメソッドの基本的な使い方の例です。

import time
# 現在のエポック秒を取得
now = time.time()
# エポック秒をローカル時間に変換
local_time = time.localtime(now)
# フォーマットを指定して文字列に変換
formatted_time = time.strftime('%Y-%m-%d %H:%M:%S', local_time)
print(formatted_time)  # 例: 2023-10-01 12:34:56

ミリ秒を含むフォーマットの例

time モジュールでは、エポック秒を使ってミリ秒を計算し、それをフォーマットされた文字列に追加することができます。

import time
# 現在のエポック秒を取得
now = time.time()
# エポック秒をローカル時間に変換
local_time = time.localtime(now)
# ミリ秒を取得
milliseconds = int((now - int(now)) * 1000)
# フォーマットを指定して文字列に変換
formatted_time = time.strftime('%Y-%m-%d %H:%M:%S', local_time) + f'.{milliseconds:03d}'
print(formatted_time)  # 例: 2023-10-01 12:34:56.789

この例では、エポック秒からミリ秒を計算し、それをフォーマットされた文字列に追加しています。

以上が、datetime モジュールと time モジュールを使ったミリ秒を含む時刻のフォーマット方法です。

これらの方法を使うことで、精度の高い時刻情報を取得し、フォーマットすることができます。

応用例

タイムスタンプの生成

Pythonを使ってタイムスタンプを生成する方法について解説します。

タイムスタンプは、特定の時刻を一意に識別するために使用される数値です。

これにより、データの整合性や一貫性を保つことができます。

タイムスタンプとは

タイムスタンプとは、特定の時刻を表す数値のことです。

通常、エポックタイム(1970年1月1日00:00:00 UTC)からの経過時間を秒単位で表します。

タイムスタンプは、ログファイルの記録やデータベースの更新時刻の管理など、さまざまな用途で使用されます。

ミリ秒精度のタイムスタンプの生成方法

Pythonでは、time モジュールを使用してミリ秒精度のタイムスタンプを生成することができます。

以下にその方法を示します。

import time
# 現在の時刻を取得
current_time = time.time()
# ミリ秒精度のタイムスタンプを生成
timestamp_in_milliseconds = int(current_time * 1000)
print("ミリ秒精度のタイムスタンプ:", timestamp_in_milliseconds)

このコードでは、time.time() を使用して現在の時刻を秒単位で取得し、それを1000倍してミリ秒単位に変換しています。

最後に、int関数を使って整数に変換しています。

時間計測

次に、Pythonを使って処理時間を計測する方法について解説します。

処理時間の計測は、プログラムのパフォーマンスを評価するために重要です。

処理時間の計測方法

Pythonでは、time モジュールを使用して処理時間を計測することができます。

以下にその方法を示します。

import time
# 計測開始時刻を取得
start_time = time.time()
# 計測対象の処理
for i in range(1000000):
    pass
# 計測終了時刻を取得
end_time = time.time()
# 処理時間を計算
elapsed_time = end_time - start_time
print("処理時間:", elapsed_time, "秒")

このコードでは、処理の前後で time.time() を使用して時刻を取得し、その差分を計算することで処理時間を求めています。

ミリ秒単位での計測例

さらに、ミリ秒単位で処理時間を計測する方法についても解説します。

import time
# 計測開始時刻を取得
start_time = time.time()
# 計測対象の処理
for i in range(1000000):
    pass
# 計測終了時刻を取得
end_time = time.time()
# 処理時間をミリ秒単位で計算
elapsed_time_in_milliseconds = (end_time - start_time) * 1000
print("処理時間:", elapsed_time_in_milliseconds, "ミリ秒")

このコードでは、処理時間を計算する際に1000倍することで、ミリ秒単位での計測を行っています。

以上が、Pythonを使ったタイムスタンプの生成と処理時間の計測方法です。

これらの技術を活用することで、プログラムのパフォーマンスを効率的に評価・管理することができます。

目次から探す