[Python] 파이썬 날짜,시간 함수 다루기
업데이트:
파이썬 날짜,시간 함수 다루기
1.현재 시간 출력하기
파이썬에서 날짜, 시간과 관련된 내용은 datetime 이라는 라이브러리를 활용합니다. 그리고 현재 시간을 출력하고 싶다면 다음과 같은 코드를 사용합니다.
import datetime
## 현재시간 출력하기
now = datetime.datetime.now()
## 현재시간이 출력 됩니다
print(now)
> 2021-09-14 13:38:22.269404
2. 현재 시간 출력 포맷 변경하기
import datetime
## 현재시간 포맷 변경하기
now = datetime.datetime.now()
nowDatetimeS = now.strftime('%Y-%m-%d %H:%M:%S.%f')
print(nowDatetimeS)
> 2021-09-14 13:41:02.263393
nowDatetime = now.strftime('%Y-%m-%d %H:%M:%S')
print(nowDatetime)
> 2021-09-14 13:41:02
nowDate = now.strftime('%Y-%m-%d')
print(nowDate)
> 2021-09-14
nowHM = now.strftime('%H:%M')
print(nowHM)
> 13:41
nowHM2 = now.strftime('%H%M')
print(nowHM2)
> 1341
3. 시간차를 이용한 날짜 출력하기
import datetime
## 현재시간으로부터 특정 시간차 날짜 출력하기
now = datetime.datetime.now()
print(now)
> 2021-09-14 13:41:02.263393
# 현재 시간으로 부터 20분전 시간 출력
dt = now - datetime.timedelta(minutes=20)
print(dt)
> 2021-09-14 13:21:02.263393
시간차 단위가 분이 아닌 주, 일, 시간, 초 등은 다음 표를 참고하시면 됩니다.
단위 | 문법 |
---|---|
1주 | datetime.timedelta(weeks=1) |
1일 | datetime.timedelta(days=1) |
1시간 | datetime.timedelta(hours=1) |
1분 | datetime.timedelta(minutes=1) |
1초 | datetime.timedelta(seconds=1) |
1밀리초 | datetime.timedelta(milliseconds=1) |
1마이크로초 | datetime.timedelta(microseconds=1) |
4. 특정 날짜 출력하기
이번에는 파이썬에서 특정 문자열 형태로 생긴 날짜, 시간 데이터를 date 형태로 변환시켜 보겠습니다.
import datetime
# 2019년 7월 1일 15시 24분 33초라는 시각을 출력하고 싶을때
now = datetime.datetime.strptime('2019-07-01 15:24:33', '%Y-%m-%d %H:%M:%S')
print(now)
5. 두 날짜 시간차 구하기
이번에는 두 날짜의 시간차를 구해보겠습니다. string 형태의 문자열을 datetime으로 바꾸고 날짜의 시간차를 구하면 다음과 같습니다.
start = datetime.datetime.strptime('2021-09-14 07:35:25.123', "%Y-%m-%d %H:%M:%S.%f")
end = datetime.datetime.strptime('2021-09-15 08:47:31.853', "%Y-%m-%d %H:%M:%S.%f")
timediff = end - start
print(timediff)
> 1 day, 1:12:06.730000
print(timediff.days)
> 1
print(timediff.seconds)
> 4326
위 결과와 같이 timediff.days를 사용하면 두 시간의 시간차를 day 기준으로 구해주고, seconds를 사용하면 초단위로 시간차를 구해줍니다.
6. 공백이 문제라면..
배치 코드를 돌릴때, 인풋값으로 날짜를 넣는 경우 난감해지는 경우가 있습니다. 그것은 바로 공백과 관련이 있는데, 만약 내가 인풋값으로 ‘2019-07-01 15:24:33’을 넣고 싶을때, 쉘 스크립트 상에서 ‘2019-07-01 15:24:33’를 인풋으로 넣을 수 있을까요? 아마 안될 것입이다. 문제는 중간에 있는 공백인데, 이런 경우에는 ‘%Y-%m-%d %H:%M:%S’ 포맷이 아닌, ‘%Y-%m-%dT%H:%M:%S’ 포맷을 사용하면 된다. 즉,
import datetime
# 2019년 7월 1일 15시 24분 33초라는 시각을 출력하고 싶을때
# 인풋값으로 '%Y-%m-%dT%H:%M:%S'포맷을 사용한다.
dt = '2019-07-01T15:24:33'
now = datetime.datetime.strptime(dt, '%Y-%m-%dT%H:%M:%S')
print(now)
> 2019-07-01 15:24:33
# 우선 인풋을 하고 나서 자신이 원하는 포맷으로 변경한다.
nowDatetime = now.strftime('%Y-%m-%d %H:%M:%S')
print(nowDatetime)
>'2019-07-01 15:24:33'
nowDate = now.strftime('%Y-%m-%d')
print(nowDate)
>'2019-07-01'
nowHM = now.strftime('%H:%M')
print(nowHM)
>'15:24'
nowHM2 = now.strftime('%H%M')
print(nowHM2)
>'1524'