[Python] datetime 모듈, time, datetime,timedelta,timezone class 그리고 time 모듈, pendulum 모듈 다루기 예제
1. datetime 모듈
파이썬 내장모듈인 datetime은 날짜, 시간과 관련된 유용한 메소드를 지원
자주 사용하는 class는 datetime, date, time, timedelta, timezone
2. datetime class
datetime 모듈의 datetime class을 불러오는 일반적인 방법 1
#아래와 같이 모듈을 import할 경우
from datetime import datetime
#다음과 같이 호출
print(datetime(2022, 3, 3))
datetime 모듈의 datetime class을 불러오는 일반적인 방법 2
#datetime 모듈은 파이썬 내장모듈이기 때문에 바로 import해와도 된다.
import datetime
#다음과 같이 호출
print(datetime.datetime(2022, 3, 3))
1) 현재 날짜, 시각
from datetime import datetime
print(datetime.now())
#현재 날짜가 YYYY-mm-dd HH:MM:SS.ffffff 형태로 출력
2) datetime.strftime
datetime.datetime type의 시간을 받아 원하는 포멧으로 출력하고 str타입으로 변환
print(datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S"))
print(datetime.strftime(datetime(2022, 3 ,1), "%Y-%m-%d %H:%M"))
3) datetime.strptime
string type의 시간을 받아 원하는 포멧으로 출력하고 datetime.datetime타입으로 반환
print(datetime.strptime("2022-01-05 12:11:32", "%Y-%m-%d %H:%M:%S"))
datetime, date, time 클래스에서 모두 지원하는 strftime() 메서드와 달리 strptime() 메서드는 datetime 클래스에서만 지원
4) timetuple
datetime.datetime type의 시간을 입력받아 time.struct_time의 형태로 반환
print(datetime.now().timetuple())
#time.struct_time(tm_year=2022, tm_mon=3, tm_mday=3, tm_hour=15, tm_min=20, tm_sec=1, tm_wday=3, tm_yday=62, tm_isdst=-1) 출력
3. date class
1) 지정된 날짜
print(date(2022, 3, 2))
2) 오늘 날짜
_today = date.today()
print(_today)
print("\n")
#오늘 날짜의 년,월,일 각각 출력
print(_today.year)
print(_today.month)
print(_today.day)
3) isoformat()
#datetime.date의 날짜를 받아 str으로 변환
print(type(_today.isoformat()), _today.isoformat())
4) fromisoformat()
#string type의 날짜를 받아 datetime.date로 변환
print(type(date.fromisoformat('2022-03-02')), date.fromisoformat('2022-03-02'))
4. time class, timedelta class, timezone class
1) 지정한 시간
입력한 시간을 datetime.time으로 출력
print(time(13, 24, 30))
#13:24:30출력
#아무것도 입력안할 시 00:00:00 출력
print(time())
#00:00:00 출력
2) isoformat()
#HH:MM:SS.ffffff 형태의 문자열을 time객체로 반환
print(time.fromisoformat('13:22:12.234+09:00'))
3) fromisoformat()
t = time(9, 22, 55, 458000, tzinfo=timezone(timedelta(hours=9)))
#time 객체를 문자열로 반환
print(type(t.isoformat()), t.isoformat())
4) 시, 분, 초, 마이크로초
print(t.hour, t.minute, t.second, t.microsecond)
#9 22 55 458000 출력
5) replace()
시, 분, 초, 마이크로초, tzinfo까지 변경가능
print(t.replace(hour=2,second=46,tzinfo=timezone(timedelta(hours=4))))
#02:22:46.458000+04:00
6) tzinfo(timezone)
print(t.tzinfo)
#UTC+09:00 출력
7) timedelta를 이용한 어제,오늘,내일 날짜
now = datetime.now()
one_day = timedelta(days=1)
tomorrow = now + one_day
yesterday = now - one_day
8) 날짜, 시간 합치기
# 날짜 시간 따로, 합쳐서
d = date(2018, 7, 28)
t = time(12, 23, 38)
dt = datetime.combine(d, t)
print(dt) # 2018-07-28 12:23:38
5. time module
time 모듈하고 datetime.time class하고 착각하실 수도 있습니다.
time 모듈이 다루는 메소드들은 time(), localtime(), gmtime(), asctime(), sleep() 등이 있습니다.
1) time()
# 현재 시간을 unix시간으로 출력
print(time.time())
2) localtime()
# 현지의 시간을 struct_time으로 반환
print(time.localtime())
3) gmtime()
# UCT기준의 시간을 struct_time으로 반환
print(time.gmtime())
4) asctime()
# struct_time을 요일 월 시간:분:초 년도 형식의 문자열로 변환 후 반환
print(time.asctime())
5) sleep()
sleep()는 linux의 sleep과 같습니다.
time.sleep(5)
#5초간 대기한다.
6. pendulum 패키지
pendulum 패키지는 Python의 표준 라이브러리인 datetime 모듈을 쉽게 조작할 수 있음
아래의 pip 명령어를 통해 다운로드
pip3 install pendulum
1) 타임존 설정
import pendulum
# 타임존 설정
dt = pendulum.datetime(2022,3,3, tz="Asia/Seoul")
print(type(dt), dt)
2) 로컬 시간 출력
#로컬 시간 출력
dt_2 = pendulum.local(2022,3,3)
print(dt_2)
3) 현재(로컬)시간 출력
#현재(로컬)시간 출력
now = pendulum.now()
print(now)
4) 지원언어를 한국어로 설정 및 시간 더하기
#지원언어를 한국어로 설정
pendulum.set_locale('ko')
#현재로 부터 1년을 더한 값을 한국어로 설명
print(pendulum.now().add(years=1).diff_for_humans())
5) 시간을 파싱 후 세부적으로 접근
#시간을 입력받아 파싱 후 세부적으로 접근
dt_3 = pendulum.parse('2022-03-03T22:00:00')
print(dt_3.year)
print(dt_3.month)
print(dt_3.day)
print(dt_3.hour)
print(dt_3.minute)
print(dt_3.second)
print(dt_3.microsecond)
print(dt_3.day_of_week)
print(dt_3.day_of_year)
print(dt_3.week_of_month)
print(dt_3.week_of_year)
print(dt_3.days_in_month)
6) 입력받은 시간을 수정, string타입으로 출력
dt_4 = pendulum.now()
#입력 받은 시간을 수정할 수도 있고, string타입으로써 출력할 수도 있다.
dt_5= dt_4.set(year=2021, month=1, day=2).to_datetime_string()
print(type(dt_5), dt_5)
print("\n")
7) 원하는 포멧으로 출력
dt_6 = pendulum.datetime(2022, 3, 1, 00, 00, 00)
print(dt_6.format('YYYY-MM-DD HH:mm:ss'))
print(dt_6.format('[today] dddd'))
참조:
https://www.daleseo.com/python-datetime/
https://minwook-shin.github.io/python-ease-datetimes-manipulation-using-pendulum/