파이썬에서 시간을 시간, 분, 초로 변환하기

이 튜토리얼에서는 시간에 대해 이야기할 것입니다. 걱정하지 마세요, 이것은 지루한 역사 튜토리얼이 아니라, 초 단위의 시간시간, 분, 초 단위의 시간으로 변환하는 다양한 방법을 살펴볼 것입니다.

앞으로는 시간을 시간, 분, 초 단위로 표현할 것입니다. 우리가 원하는 형식의 시간이라고 말할 것입니다.

다음과 같이 보일 것입니다. :

2:46:40

우리가 직면한 문제를 생각해보고 ‘시간’을 보자. 의심할 여지없이 파이썬에는 변환을 수행하는 놀라운 모듈이 있습니다. 하지만 먼저 내장된 모듈로 넘어가기 전에 우리 자신의 프로그램을 작성해보겠습니다.

시간을 시간, 분, 초 단위로 변환하는 사용자 정의 함수 만들기

우리 자신의 변환 함수를 작성하기 위해 먼저 문제를 수학적으로 생각해야 합니다.

초를 원하는 형식으로 변환하는 방법은 무엇인가요?

시간, 분, 초의 값을 가져와야 합니다.

우리는 초 단위의 시간이 하루의 총 초수를 초과하지 않는 것으로 가정합니다. 초과하면 하루의 총 초수로 나누고 나머지를 취할 것입니다.

이 수학적으로는 다음과 같이 나타낼 수 있습니다.

seconds = seconds % (24 * 3600)

% 연산자는 나머지를 반환합니다.

24*3600 한 시간은 3600초 (60*60) 이고 하루는 24시간 입니다.

이를 기반으로 초에서 시간 값을 계산할 수 있습니다.

1. 시간 값 얻기

초에서 시간 값을 얻기 위해 정수 나눗셈 연산자 (//)를 사용합니다.

이는 몫의 정수 부분을 반환합니다.

시간의 개수를 얻기 위해 전체 초 (n)를 한 시간의 초 (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. 초 값을 얻습니다

초 값을 얻으려면 전체 초 수를 1분(60)의 초 수로 나누고 나머지를 취해야 합니다.(60)으로 나누고 나머지를 취합니다.

수학적으로는 다음과 같이 수행됩니다:

 seconds = seconds % 60

이렇게 하면 우리가 선호하는 형식에 필요한 초 값을 얻을 수 있습니다.

4. 완성된 코드

위의 지식을 파이썬 함수에 컴파일해 보겠습니다.

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 모듈 사용

이제 한 줄의 코드로 초를 우리가 선호하는 형식으로 변환할 수 있는 내장 모듈을 살펴보겠습니다.

시간 모듈은 Unix 시스템에서 1970년 1월 1일 00:00:00 (UTC)를 에포크로 정의합니다 (시스템에 따라 다름). 에포크는 컴퓨터의 시간 시작점으로 생각할 수 있습니다. 이는 마치 0일과 같습니다. 시간 모듈을 사용하여 초를 변환할 때에는 이 에포크가 참조점으로 사용됩니다.

시스템에서 에포크를 출력하려면 다음 코드를 사용하세요:

time.gmtime(0)

초를 원하는 형식으로 변환하려면 다음 코드를 사용하세요:

time.strftime("%H:%M:%S", time.gmtime(n))

이 코드는 초를 ‘n’으로 입력받고, 시간, 분, 초를 각각 출력할 수 있게 해줍니다.

완전한 파이썬 코드는 다음과 같습니다:

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 모듈 사용

timedelta 메서드Datetime 모듈에서 사용하여 초를 원하는 형식으로 변환할 수도 있습니다.

이는 에포크 이후 경과한 일, 시간, 분, 초를 일, 시간, 분, 초 단위로 표시합니다.

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

결론

이 튜토리얼에서는 시간, 분 및 초로 초를 변환하는 세 가지 다른 방법을 살펴보았습니다. 크게 두 가지 다른 방법이 있습니다.

직접 함수를 작성하거나 내장 모듈을 사용하는 것입니다. 우리는 우선 직접 함수를 작성한 다음 timeDateTime 모듈을 살펴보았습니다.

Source:
https://www.digitalocean.com/community/tutorials/python-convert-time-hours-minutes-seconds