Pythonで時間を時分秒に変換する

このチュートリアルでは、時間について話します。心配しないでください、これは退屈な歴史のチュートリアルではありません。むしろ、秒単位の時間時間、分、秒単位の時間に変換するさまざまな方法を見ていきます。

これからは、時間を時間、分、秒単位の好ましい形式の時間と呼びます。

次のようになります:

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