728x90
반응형
개발을 하다보면 원하는 포맷으로 데이터를 출력하고 싶을 때가 있다. 가령 게시글작성일이나, 해외시간을 현지시간으로 바꾼다거나 등 다양하게 활용이 가능하다.
https://docs.python.org/ko/3/library/datetime.html
더 정확한 정보는 공식문서에서 확인할 수 가 있다.
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
반응형
'Python' 카테고리의 다른 글
[Python] 몫과 나머지 , divmod() (0) | 2023.02.21 |
---|---|
[Python] 문자열을 날짜, 시간으로 변환하는 방법 (string to date, string to time) - strptime() (0) | 2023.02.03 |
[함수] range() 과 enumerate() (0) | 2023.01.22 |
[라이브러리/itertools] combinations , product , permutations (0) | 2023.01.17 |
[함수] lambda 함수(익명함수) (0) | 2023.01.17 |
댓글