このチュートリアルでは、時間について話します。心配しないでください、これは退屈な歴史のチュートリアルではありません。むしろ、秒単位の時間を時間、分、秒単位の時間に変換するさまざまな方法を見ていきます。
これからは、時間を時間、分、秒単位の好ましい形式の時間と呼びます。
次のようになります:
2:46:40
では、少し時間を取って、手元の問題について考えてみましょう。間違いなく、Pythonには変換を行うための素晴らしいモジュールがあります。しかし、組み込みのモジュールに移る前に、最初に独自のプログラムを書いてみましょう。
時間を時間、分、秒に変換するカスタム関数の構築
独自の変換関数を書くには、まず数学的に問題について考える必要があります。
秒を好ましい形式に変換するにはどうすればよいですか?
時間、分、秒の値を取得する必要があります。
秒単位の時間が1日の合計秒数を超えないと仮定します。超える場合は、1日の合計秒数で割り、余りを取得します。
これは数学的に次のように表されます:
seconds = seconds % (24 * 3600)
%演算子は余りを与えます。
24*36001時間は3600秒(60*60)あり、1日は24時間です。
これ以降、秒から時間の値を計算できます。
1. 時間の値を取得します
秒から時間の値を取得するには、切り捨て除算演算子(//)を使用します。
これは商の整数部分を返します。
時間の数が必要なので、総秒数(n)を1時間の総秒数(3600)で割ります。
数学的には、次のように表されます:
hour = seconds // 3600
その後、分を計算する必要があります。
2. 分の値を取得します
分の値を計算するには、まず総秒数を3600で割り、余りを取得します。
数学的には、次のように表されます:
seconds = seconds % 3600
上記の結果から分の値を計算するには、再び切り捨て演算子を使用します。
minutes = seconds // 60
A minute has sixty seconds hence we floor the seconds value with 60.
計算分值後,我們可以繼續計算我們所選擇格式的秒值。
3. 獲取秒值
為了獲取秒值,我們需要再次將總秒數除以一分鐘的秒數(60),並取餘數。
數學上的表示如下:
seconds = seconds % 60
這將給出我們所需格式的秒值。
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模塊
現在讓我們來看一個內置模塊,它讓我們可以在一行代碼中將秒數轉換為我們所需的格式。
timeモジュールは、Unixシステム(システムに依存)でのエポックを1970年1月1日、00:00:00(UTC)として定義します。エポックは基本的にコンピューターの時間の開始地点です。ゼロ日と考えてください。時間モジュールを使用して秒を変換する場合、このエポックが参照点として使用されます。
システムでエポックを出力するには、次のコード行を使用します:
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
timeモジュールには、日、月、年などの追加情報を表示するオプションもあります。
%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モジュールを見ました。
Source:
https://www.digitalocean.com/community/tutorials/python-convert-time-hours-minutes-seconds