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/
'language > Python' 카테고리의 다른 글
[Python] re 모듈, 정규 표현식(정규식) 개념과 완전 정복하기(regex cheat sheet) SQL, HIVE, PySpark에서의 regex (0) | 2022.04.09 |
---|---|
[Python] generator 개념 및 예제 (feat. iterator) (0) | 2022.04.07 |
[Python] OS, sys, glob 모듈 개념, 활용 예제 (0) | 2022.03.03 |
[Python] Argparse란? Argparse 모듈 개념과 실습 예제 (0) | 2022.03.03 |
[Python] 파이썬의 여러가지 formatting 방법 다루기 (0) | 2022.03.02 |
댓글