Tiny Finger Point Hand With Heart
본문 바로가기
Python

[Python] 날짜, 시간을 문자열로 변환하는 방법 (date to string, time to string) - strftime

by yoondii 2023. 2. 3.
728x90
반응형

 

개발을 하다보면 원하는 포맷으로 데이터를 출력하고 싶을 때가 있다. 가령 게시글작성일이나, 해외시간을 현지시간으로 바꾼다거나 등 다양하게 활용이 가능하다.

 

https://docs.python.org/ko/3/library/datetime.html

 

datetime — Basic date and time types

Source code: Lib/datetime.py The datetime module supplies classes for manipulating dates and times. While date and time arithmetic is supported, the focus of the implementation is on efficient attr...

docs.python.org

더 정확한 정보는 공식문서에서 확인할 수 가 있다.


datetime포맷형식을 사용하려면 먼저 datetime을 import 해줘야한다. 그 다음, 변환할 데이터를 어떻게 작성해야 변환되는지 형식을 알아야한다.

Python 에서 strftime() 을 사용하시면 datetime, time 등의 날짜, 시간 형식을 원하는 문자열로 변경할 수 있다.


strftime()

from datetime import datetime

dt = datetime(2021, 12, 31, 13, 35, 42, 657813)

result = dt.strftime("%Y년 %m월 %d일 %H시 %M분 %S.%f초")

print("문자열 변환 전 형식 : ", type(dt))
print("문자열 변환 후 출력 : ", dt)
print("문자열 변환 후 형식 : ", type(result))
print("문자열 변환 후 출력 : ", result)

# Output
# 문자열 변환 전 형식 :  <class 'datetime.datetime'>
# 문자열 변환 후 출력 :  2021-12-31 13:35:42.657813
# 문자열 변환 후 형식 :  <class 'str'>
# 문자열 변환 후 출력 :  2021년 12월 31일 13시 35분 42.657813초

datetime 모듈을 사용하여 날짜와 시간을 지정하고 출력하는 예시이다.

strftime() 을 사용하여 위와 같이 날짜, 시간 형식을 원하는 문자열 형식으로 변환하여 사용할 수 있다.

datetime 모듈 뿐만 아니라 time 모듈에도 사용 가능하다.


strftime()에 사용되는 포맷 코드는 예시에 사용된 것 이외에도 아주 많은 것들이 있다.

strftime 포맷 코드 표

그룹 코드 의미
%Y 연도 (전체)
%y 연도 (뒤에 2자리만)
%m
%B Locale 월 표현 (전체)
%b Locale 월 표현 (축약형)
%d
%j 연중 일
%H 시 (24시간제)
%I 시 (12시간제)
%p Locale 오전, 오후
%M
%S
마이크로초 %f 마이크로초
요일 %w 요일 (0 : 일요일, 6일 : 토요일)
%A Locale 요일 (전체)
%a Locale 요일 (축약형)
%W 연중 몇 번째 주인지 표현 (월요일 시작 기준)
%U 연중 몇 번째 주인지 표현 (일요일 시작 기준)
날짜 표현 %c Locale 날짜와 시간 표현
%x Locale 날짜 표현
%X Locale 시간 표현
문자 표현 %% 리터럴 '%' 문자

위 표를 참고하셔서 원하는 포맷으로 날짜 및 시간 형식 원하는 형식의 문자열로 변경하여 사용하면된다.

%가 먼저 나온다는 것을 까먹지 말자!

 

from datetime import datetime

dt = datetime(2021, 12, 31, 13, 35, 42, 657813)

print(dt)

print("%Y (연도 (전체)) :", dt.strftime("%Y"))
print("%y (연도 (뒤에 2자리만) : ", dt.strftime("%y"))

print("%m (월) : ", dt.strftime("%m"))
print("%B (Locale 월 표현 (전체)) : ", dt.strftime("%B"))
print("%b (Locale 월 표현 (축약형)) : ", dt.strftime("%b"))

print("%d (일) : ", dt.strftime("%d"))
print("%j (연중 일) : ", dt.strftime("%j"))

print("%H (시 (24시간제)) : ", dt.strftime("%H"))
print("%I (시 (12시간제)) : ", dt.strftime("%I"))
print("%p (Locale 오전, 오후) : ", dt.strftime("%p"))

print("%M (분) : ", dt.strftime("%M"))

print("%S (초) : ", dt.strftime("%S"))

print("%f (마이크로초) : ", dt.strftime("%f"))

print("%w (요일 (0 : 일요일, 6일 : 토요일)) : ", dt.strftime("%w"))
print("%A (Locale 요일 (전체)) : ", dt.strftime("%A"))
print("%a (Locale 요일 (축약형)) : ", dt.strftime("%a"))

print("%W (연중 몇 번째 주인지 표현 (월요일 시작 기준)) : ", dt.strftime("%W"))
print("%U (연중 몇 번째 주인지 표현 (일요일 시작 기준)) : ", dt.strftime("%U"))

print("%c (Locale 날짜와 시간 표현) : ", dt.strftime("%c"))
print("%x (Locale 날짜 표현) : ", dt.strftime("%x"))
print("%X (Locale 시간 표현) : ", dt.strftime("%X"))
print("%% (리터럴 '%' 문자) : ", dt.strftime("%%"))

# Output
# 2021-12-31 13:35:42.657813
# %Y (연도 (전체)) : 2021
# %y (연도 (뒤에 2자리만) :  21
# %m (월) :  12
# %B (Locale 월 표현 (전체)) :  December
# %b (Locale 월 표현 (축약형)) :  Dec
# %d (일) :  31
# %j (연중 일) :  365
# %H (시 (24시간제)) :  13
# %I (시 (12시간제)) :  01
# %p (Locale 오전, 오후) :  PM
# %M (분) :  35
# %S (초) :  42
# %f (마이크로초) :  657813
# %w (요일 (0 : 일요일, 6일 : 토요일)) :  5
# %A (Locale 요일 (전체)) :  Friday
# %a (Locale 요일 (축약형)) :  Fri
# %W (연중 몇 번째 주인지 표현 (월요일 시작 기준)) :  52
# %U (연중 몇 번째 주인지 표현 (일요일 시작 기준)) :  52
# %c (Locale 날짜와 시간 표현) :  Fri Dec 31 13:35:42 2021
# %x (Locale 날짜 표현) :  12/31/21
# %X (Locale 시간 표현) :  13:35:42
# %% (리터럴 '%' 문자) :  %

 

 

나중에 다양하게 활용이 가능하다.

from datetime import datetime

# 인풋을 아웃풋으로 변환하여 출력하라  인풋은 날짜,문자열 등 다양/ 아웃풋은 2023-02-01 00:00:00 이렇게 나와야함

# Q1
date1 = datetime(2023,2,1,0,0,0)
print(date1)  # 2023-02-01 00:00:00

# Q2 현재날짜에 시간만 변경하기
date2 = datetime.now()
print(date2.strftime("%Y-%m-%d %04:%00:%00"))
# 2023-02-02 4:0:0

 

728x90
반응형

댓글