Python

파이썬 날짜와 시간 datetime, date, isoformat()

K2ODING 2021. 11. 25. 17:56
728x90
from datetime import date

new_years_day = date(2021, 1, 1)
new_years_day
datetime.date(2021, 1, 1)
new_years_day.month
1
new_years_day. weekday()
4 # 금요일

new_years_day. isoformat() # 날짜 형태 정리 
'2021-01-01'

#2021 /01/ 01
new_years_day. strftime('%Y/%m/%d')
'2021/01/01'

# 2021년 01월 01일
new_years_day. strftime(' %Y년 %m월 %d일 ')
' 2021년 01월 01일 '

new_years_day. strftime('%Y/%m/%d/ %A')
'2021/01/01/ Friday'

 

#오늘 날짜 구하기
today=date.today()
today
datetime.date(2021, 11, 11)

today.strftime('%Y/ %m/ %d/ %A')
'2021/ 11/ 11/ Thursday'

 

시각 다루기

from datetime import time

sometime=time(16, 33, 25)
sometime
datetime.time(16, 33, 25)

sometime.hour
16
sometime.minute
33
sometime.second
25
sometime.isoformat()
'16:33:25'
sometime.strftime('%I:%M:%S %p')
'04:33:25 PM'

 

일시 다루기 - datetime

from datetime import datetime

today = datetime.today()
today
datetime.datetime(2021, 11, 11, 16, 46, 43, 426235)

today.date()
datetime.date(2021, 11, 11)

today.time()
datetime.time(16, 46, 43, 426235)

today.isoformat()
2021-11-11T16:46:43.426235'

today.strftime('%Y-%m-%d %H:%M')
'2021-11-11 16:46'

 

시각 다루기 2

UTC 현재 시각

import time
time.gmtime()
time.struct_time(tm_year=2021, tm_mon=11, tm_mday=11, tm_hour=7, tm_min=49, tm_sec=32, tm_wday=3, tm_yday=315, tm_isdst=0)

 

local 시각 - 우리나라 기준 시각

time.localtime()
time.struct_time(tm_year=2021, tm_mon=11, tm_mday=11, tm_hour=16, tm_min=49, tm_sec=58, tm_wday=3, tm_yday=315, tm_isdst=0)

 

1970년 1월 1일 자정 이후로 누적된 초를 float 단위로 반환

time. time()
1636617248.2308922

# 1970년 1월 1일 0시 => 0
time. time()
1636617263.3779364

 

문자열로 되어 있는 날짜를, 파이썬이 계산할 수 있도록 하는 방법

  • 텍스트파일에 2019.07.23 이라든가, 2019-07-23 등 문자열로 들어있는 날짜를, 무슨요일인지 등 파악할 수 있도록 하자
  • 아래 import 가 안되면, pip install pyton-dateutil 실행
from dateutil.parser import parse

date_str = '2000-06-30'
type(date_str)
str # 문자 

someday = parse(date_str)
someday.weekday()
4

someday.strftime('%A')
'Friday'

 

특정일로부터 원하는 날짜 계산하기

from dateutil.relativedelta import relativedelta

today = datetime.today()
today + relativedelta(days=+26)
datetime.datetime(2021, 12, 7, 17, 0, 55, 301713)

today + relativedelta(days= -26)
datetime.datetime(2021, 10, 16, 17, 0, 55, 301713)

today + relativedelta(years=+1, months=+3, days=+5, hours=5)
datetime.datetime(2023, 2, 16, 22, 0, 55, 301713)

date(2021, 10, 5) + relativedelta(days= +100)
datetime.date(2022, 1, 13)

(date(2021, 10, 5) + relativedelta(days= +100)).weekday()
3

 

두 날짜의 차이를 구한다

today
datetime.datetime(2021, 11, 11, 17, 0, 55, 301713)

d_day = date(2021, 12, 31)
relativedelta(d_day, today)
relativedelta(months=+1, days=+19, hours=+6, minutes=+59, seconds=+4, microseconds=+698287)

def power(base, exp):
    return base ** exp

print(power(3, 2))
print(power(10, -2))
9
0.01

10 ** -2
0.01