본문 바로가기

TIL

TIL 032323

(2) datetime → string

datetime 데이터를 string으로 바꾸는 방법은 두 가지가 있다. str()를 사용하면 print() 결과물이 출력된다. 특정한 형태의 데이터로 바꾸고자 한다면 strftime을 사용하면 된다. 참고로 datetime.datetime.now()로 현재 날짜, 시간을 얻을 수 있다.

import datetime

today = datetime.datetime.now()
print(today)
>>>> '2021-06-06 00:23:55.736843'

## 방법 1
str(today)
>>>> '2021-06-06 00:24:28.669012'

## 방법 2
datetime.datetime.strftime(today, '%Y-%m-%d')
>>>> '2021-06-06'

datetime.datetime.strftime(today, '%D')
>>>> '06/06/21'

 

===> str()와 strftime()의 차이가 뭔지 궁금해서 검색해봤다.

str()은 datetime을 그대로 문자로 바꿔주고 strftime()은 문자로 바꿔주면서 동시에 format을 지정해서 출력할 수 있다.


https://walkingfox.tistory.com/109

 

Python : timedelta(months=3) 방법

Python에서 사용할 수 있는 시간의 차이에 관련된 모듈은 datetime.timedelta 가 있습니다. 아래와 같이 사용할 수 있습니다. import datetime as dt now = dt.datetime.now() delta = dt.timedelta(hours=3) diff = now - delta 이

walkingfox.tistory.com

 

===> 튜터님이랑 강의에서 -를 +로 바꾸는건 잘 됐는데 나혼자 days를 months로 바꿔보니 에러가 나서 검색해봤다.

timedelta로 months, years는 못 하고 days, weeks, hours, minutes, seconds는 된단다.

months, years는 따로 relativedelta라는 모듈로 계산할 수 있다고 한다.

from dateutil.relativedelta import relativedelta

직접해보니 잘 된다.

왜 저거 하나로 다 되게 안 해놨을까?


비어있는 string, list 등은 분기문에서 False로 판단합니다.

empty_string = ""
empty_list = []

if not empty_string:
    print("string is empty!!")

if not empty_list:
    print("list is empty!!")

헷갈린다.

 

if empty_list == []:
    print('test')

if empty_string == "":
    print('test')

이렇게 써보니까 test가 프린트된다.

=이 한개면 안된다.

 

아니면 if len(판단할거) == 0: 이렇게 언제 쓴 적 있는 것 같다.

그렇지만 헷갈려도 강의처럼 쓰려고 노력해봐야겠다.

 

[""]는 True!!! 재밌군.


# all() : 요소들이 모두 True일 경우 True 리턴
if all([True, True, True, False, True]):
    print("통과!")  # False가 존재하기 때문에 분기문을 통과하지 못함

# any() : 요소들 중 하나라도 True일 경우 True 리턴
if any([False, False, False, True, False]):
    print("통과!")  # True가 1개 이상 존재하기 때문에 분기문을 통과함

처음에 '통과하다'를 아무 작업도 하지 않고 그냥 다음 줄로 지나가는거라고 생각해서 헷갈렸다.

False가 있으니까 print("통과!")를 그냥 통과하고 다음 if문으로 넘어가는거 아닌가? 근데 왜 통과하지 못한다고 하지? 하고 헷갈렸는데...

어떤건 이론을 이해하고 아는 것보다 print 실행해보고 결과값을 확인하는게 더 잘 받아들여진다.

 

분기문이 뭔지 검색해봐야겠다.

===> 혹시 if 뒤에 오는 참일 경우 그 부분만을 분기문이라고 하는건가 하고 궁금해져서 검색해봤다.

조건문과 반복문에서 주어진 흐름을 바꾸는 break와 continue가 분기문이라는 글과 if문 같은 조건문들이 분기문이라는 글들이 있었다.

if 문은

if (expression1)

statement1

else (expression2)

statement2

으로 구성된다는 글을 봤다.

분기문이 영어로 뭔지 알아봐야겠다.

나는 if (expression1)이 한줄? 이 부분만 분기문이라고 하는건지 궁금하다.

분기문은 못 찾았고 else 부분을 branch라고 하는 글을 봤는데...

명확하게 궁금증이 해결된건 아니지만 어쨌든 중요한건 뭐라고 썼을 때 뭐가 출력되는지 돌려보면 알겠다는 거다. 끝.


 

'TIL' 카테고리의 다른 글

TIL 032723  (0) 2023.03.27
TIL 032423  (0) 2023.03.24
TIL 032223  (0) 2023.03.22
TIL 032123  (0) 2023.03.21
TIL 032023  (0) 2023.03.20