이 튜토리얼에서는 시간에 대해 이야기할 것입니다. 걱정하지 마세요, 이것은 지루한 역사 튜토리얼이 아니라, 초 단위의 시간을 시간, 분, 초 단위의 시간으로 변환하는 다양한 방법을 살펴볼 것입니다.
앞으로는 시간을 시간, 분, 초 단위로 표현할 것입니다. 우리가 원하는 형식의 시간이라고 말할 것입니다.
다음과 같이 보일 것입니다. :
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
결론
이 튜토리얼에서는 시간, 분 및 초로 초를 변환하는 세 가지 다른 방법을 살펴보았습니다. 크게 두 가지 다른 방법이 있습니다.
직접 함수를 작성하거나 내장 모듈을 사용하는 것입니다. 우리는 우선 직접 함수를 작성한 다음 time과 DateTime 모듈을 살펴보았습니다.
Source:
https://www.digitalocean.com/community/tutorials/python-convert-time-hours-minutes-seconds