Pythonで時間を時、分、秒に変換する
このチュートリアルでは、時間についてお話しします。心配しないでください、これはつまらない歴史のチュートリアルではありません。むしろ、秒単位の時間を時間、分、秒に変換するさまざまな方法を見ていきます。
今後、時間の表現には、優先された形式である「時、分、秒」という表記方法を使用します。
それは見た目が〜
2:46:40
今取り組んでいる問題について、少し時間をかけて考えましょう。間違いなくPythonには私たちのために変換を行う素晴らしいモジュールがあります。しかし、組み込みのモジュールに移る前に、自分たちでプログラムを書いてみましょう。
時間を時、分、秒に変換するカスタム関数の作成
自分自身の変換関数を書くためには、まず数学的な問題について考える必要があります。
秒を希望するフォーマットに変換する方法はありますか? (Bō o kibō suru fōmāto ni henkan suru hōhō wa arimasu ka?)
時間、分、秒の値を取得する必要があります。
日本語で完全なエンディングを1つだけ用意するよ:
1日の総秒数を超えないものと仮定します。もし超えた場合は、1日の総秒数で割り、余りを取得します。
これは数学的に表されます。
seconds = seconds % (24 * 3600)
%演算子は余りを返します。
1日は24時間あり、1時間は3600秒(60秒 × 60分)なので、24時間 × 3600秒は86400です。
この後、秒数から時間の値を計算して進めることができます。
1. 時間の値を取得してください。(Jikan no atai o shutoku shite kudasai.)
秒から時間の値を取得するために、床除算演算子(//)を使用します。
商の整数部分を返します。
時間の数が必要なので、合計秒数(n)を1時間の合計秒数(3600)で割ります。
数学的には、これは次のように表されます。
hour = seconds // 3600
これから、分を計算する必要があります。 (Korekara, bun o keisan suru hitsuyou ga arimasu.)
2. 分の値を取得する
分の価値を計算するには、まず総秒数を3600で割り、余りを取る必要があります。
数学的には、これは次のように表されます:
seconds = seconds % 3600
上記の結果から分の値を計算するために、再び床関数を使います。
minutes = seconds // 60
1分は60秒ですので、秒の値を60で割ります。
分単位を計算した後、好みの形式で秒の値を計算することができます。
3.秒の値を取得する
秒の値を取得するためには、トータルの秒数を1分の秒数(60)で割り、余りを取得する必要があります。
数学的には、次のように行われます。
seconds = seconds % 60
私たちが求めている好ましい形式の2番目の値をこれによって得ることができます。
4. コードを完全にする
以上の知識をPythonの関数にまとめましょう。
def convert_to_preferred_format(sec):
sec = sec % (24 * 3600)
hour = sec // 3600
sec %= 3600
min = sec // 60
sec %= 60
print("seconds value in hours:",hour)
print("seconds value in minutes:",min)
return "%02d:%02d:%02d" % (hour, min, sec)
n = 10000
print("Time in preferred format :-",convert(n))
出力:
seconds value in hours: 2
seconds value in minutes: 46
Time in preferred format :- 02:46:40
Timeモジュールを使用する。
では、1行のコードで秒を好みの形式に変換するための組み込みモジュールを見てみましょう。
タイムモジュールは、Unixシステム(システムに依存)において、1970年1月1日00:00:00(UTC)をエポックと定義しています。エポックとは、コンピューターにおける時間の開始点のことです。つまり、日付0と考えることができます。タイムモジュールを使用して秒数を変換する際には、このエポックが参照点として使用されます。
以下のコードを使用して、システムでエポックを出力します。
time.gmtime(0)
秒を好みのフォーマットに変換するには、以下のコードを使用してください。
time.strftime("%H:%M:%S", time.gmtime(n))
この行は、秒単位の時間(n)を受け取り、それを別々に時、分、秒の値として出力できます。
以下に完全なPythonコードを示します。
import time
n=10000
time_format = time.strftime("%H:%M:%S", time.gmtime(n))
print("Time in preferred format :-",time_format)
出力:
Time in preferred format :- 02:46:40
時間モジュールでは、日、月、年など、追加の情報を表示するオプションも提供しています。
%a |
display abbreviated weekday name. |
%A |
display full weekday name. |
%b |
display abbreviated month name. |
%B |
display full month name. |
%c |
display the appropriate date and time representation. |
%d |
display day of the month as a decimal number [01,31]. |
%aと%bを使用してみましょう。
import time
n=100000000000
time_format = time.strftime("Day: %a, Time: %H:%M:%S, Month: %b", time.gmtime(n))
print("Time in preferred format :-",time_format)
出力:
Time in preferred format :- Day: Wed, Time: 09:46:40, Month: Nov
Datetimeモジュールを使用する
お好みの形式に秒数を変換するために、DateTimeモジュールのtimedeltaメソッドも使用できます。
エポックから経過した日数、時間、分、秒として時間を表示します。
以下は、秒数を優先される形式に変換するためのPythonのコードです。Datetimeモジュールを使用します。
import datetime
n= 10000000
time_format = str(datetime.timedelta(seconds = n))
print("Time in preferred format :-",time_format)
出力する:
Time in preferred format :- 115 days, 17:46:40
結論
このチュートリアルでは、秒を時間、分、秒に変換するために使用できる3つの異なる方法について説明しました。大まかには、この問題に取り組むための2つの異なる方法があります。
自分で関数を書くか、組み込みモジュールを利用することができます。私たちはまず独自の関数を作成し、その後、timeモジュールとDateTimeモジュールを見てみました。