티스토리 뷰

오늘 날짜를 출력하는 두가지 방법

from datetime import datetime
print((datetime.date.today().isoformat()))

결과
2019-10-06

datetime.datetime.now()

결과
2019-10-06 03:24:17.268870

날짜 더하기(+3초 하기)

현재 시간에 +1시간 하기, +7일 하기 등 날짜를 더하고 빼야 할 때 datetime.timedelta()를 사용 합니다.

now = datetime.datetime.now()
print(now)
now += datetime.timedelta(seconds=3)
print(now)

결과
2019-10-06 03:28:11.035275
2019-10-06 03:28:14.035275

 

결과 해설

2019-10-06 03:28:11로 11초 였는데 +3초가 된 2019-10-06 03:28:14 로 바뀌었습니다.

 

날짜 더하기 1일

timedelta는 seconds뿐만 아니라 days, seconds, microseconds, milliseconds, minutes, hours, weeks를 지원 합니다. 

아래는 day를 더하고 포메팅까지 하는 예제 입니다.

import datetime
day_cnt = 1
date = datetime.datetime.now() + datetime.timedelta(days=day_cnt).strftime("%Y%m%d")

 

날짜 포메팅 하기

날짜 포멧팅은 날짜의 표시 형식을 바꿔주는 것입니다. 일단은 시, 분, 초를 각각 뽑으면 원하는 대로 포메팅 할 수 있겠지요?

now = datetime.datetime.now()
print(now)
print(now.hour)
print(now.minute)
print(now.second)

결과
2019-10-06 13:05:57.835130
13
5
57

 

문자열을 datetime으로 파싱

'%Y%m%d'는 yymmdd형식의 문자열을 datetime으로 파싱합니다. 날짜 형식에 -이나 .등이 추가 되어 있다면 '%Y-%m-%d', '%Y.%m.%d' 등을 이용 할 수 있습니다.

from datetime import datetime
dt = datetime.strptime(str(item['delngDe']), '%Y%m%d')

 

문자열을 timestamp로

.timestamp()함수는 결과를 float으로 return합니다. 필요하다면 int()로 파싱해서 소수점을 자를 수 있습니다.

from datetime import datetime
dt = datetime.strptime('20200102', '%Y%m%d')
tst = datetime.timestamp(dt)

결과

1577890800.0

 

 

timestamp를 datetime으로

.timestamp()함수를 썼다면 int()로 형변환 해준후 .fromtimestamp()를 사용합니다.

dt = datetime.strptime('20200102', '%Y%m%d')
tst = int(datetime.timestamp(dt))
datetime.fromtimestamp(tst)

 

날짜 YYmmdd_HHMMSS로 포메팅 하기

파이썬에서 지원하는 포메팅 형식을 쓸때는 아래와 같이 사용합니다.

now = datetime.datetime.now()
formattedDate = now.strftime("%Y%m%d_%H%M%S")
print(formattedDate)

결과
20191006_130557

 

 

요일 출력하기

.weekday()는 월화수목금토일을 각각 0123456으로 출력을 해줍니다.

from datetime import datetime

print(datetime.now())
print(datetime.now().weekday())

결과

2021-04-27 01:10:36.677706

1

 

결과 해석

결과에나온 4월 27일은 화요일 입니다. 화요일은 1이기 때문에 결과에 1이 출력 되었습니다.

 

 

날짜 생성하기

20200101부터 20200315까지 날짜 생성하기

import pandas as pd
rct3 = pd.date_range(start='20200101', end='20200315')
dt_list = rct3.strftime("%Y%m%d").to_list()

print(dt_list)

결과

['20200101', '20200102', '20200103', '20200104', '20200105', '20200106', '20200107', '20200108', '20200109',

...중략...

 '20200304', '20200305', '20200306', '20200307', '20200308', '20200309', '20200310', '20200311', '20200312',

 '20200313', '20200314', '20200315']

 

 

7일 날짜 생성하기

days=6을 생성한 이유는 +6을 더해야 7일이 생성되기 때문

class WeeklyWorkPlan:
    dt_list = []
    start_date = '2022-09-01'
    
    def set_dates(self):
        dt = datetime.strptime(self.start_date, '%Y-%m-%d') + timedelta(days=6)
        rct3 = pd.date_range(start=datetime.strptime(self.start_date, '%Y-%m-%d'), end=dt.strftime("%Y%m%d"))
        dt_list = rct3.strftime("%Y-%m-%d").to_list()
        self.dt_list = dt_list

 

결과

['2022-09-01', '2022-09-02', '2022-09-03', '2022-09-04', '2022-09-05', '2022-09-06', '2022-09-07']

 

 

월화수목금토일 생성

앞에 코드에 이어서 형식을 "%A"로 주면 Sunday, Monday형식의 요일을 얻을 수 있습니다.

class WeeklyWorkPlan:
    dt_list = []
    days_of_week = []
    start_date = '2022-09-01'

    def set_dates(self):
        dt = datetime.strptime(self.start_date, '%Y-%m-%d') + timedelta(days=6)
        week = pd.date_range(start=datetime.strptime(self.start_date, '%Y-%m-%d'), end=dt.strftime("%Y%m%d"))
        dt_list = week.strftime("%Y-%m-%d").to_list()
        self.days_of_week = week.strftime("%A").to_list()
        self.dt_list = dt_list
        print(self.dt_list)
        print(self.days_of_week)

 

결과

['2022-09-01', '2022-09-02', '2022-09-03', '2022-09-04', '2022-09-05', '2022-09-06', '2022-09-07']
['Thursday', 'Friday', 'Saturday', 'Sunday', 'Monday', 'Tuesday', 'Wednesday']

 

 

 

728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함