TIL. 최종프로젝트(10) datetime 일차 구하기

2023년 06월 15일 by barryjung

    TIL. 최종프로젝트(10) datetime 일차 구하기 목차

[오늘 한일]

  • 웹소켓 미들웨어 반영
  • 퀴즈 신고하기 프론트 연결. 모달창 구현
  • 연속 학습일자 계산 작성 보조

 

[오늘 배운점]

DRF

<datetime 일차 구하기>

우리는 프로젝트에 연속 출석일수를 넣을 계획이다.

 

팀원분이 해당 코드를 작성해주셨는데, 디버그를 하면서 보니 몇가지 논점이 발견됬다.

1. datetime중 연월일 부분만 str으로 떼어내어 감산할경우

  > 월 말일과 첫날의 빼기에서 문제 여지가 있음.

2. datetime 오브젝트 간의 감산을 할경우

  > 시간 적으로 정확이 24이 경과해야 하루가 경과한 것으로 인지. 문제의 여지가 큼.

  (두 datetime오브젝트 간에는 -로 감산 할수 있다.)

3. 결론 적으로, 두문제를 다 방지하게끔 datetime 오브젝트 간의 감산이되 시간을 생략한 감산을 작성해야 한다.

그래야 일일 출석 체크를 원하는 대로 할수 있다.

 

 

방법이 간단할것이다고 생각했는데 꽤 까다롭다.

https://pynative.com/python-difference-between-two-dates/ 참고한 사이트다.

 

먼저 datetime에 date메소드는 연월일만 별도 특별한 오브젝트로 뽑아내는 동작을 한다.

그럼 그 오브젝트를 스트링으로 변환하고,

그 스트링 값을 datetime.strptime 메소드에 넣고 표현식을 같이 입력해주면,

시간 값이 생략된 (00:00:00이 된다.) datetime 오브젝트를 얻을 수 있다.

이렇게 계산된 두 datetime 오브젝트를 감산하면 날짜 차이만 순수하게 구할수 있다.

 

한편 두 datetime오브젝트를 감산하여 나온 반환값은 timedelta라는 또 다른 오브젝트이다.

이 timedelta는 datetime오브젝트와 유기적인 관계인데, 많이 복잡하다.

언젠가 이런 부분도 알게될 기회가 오지 않을까 싶다.

 

 

결론, datetime의 일자차를 구하는 코드를 작성할수 있었다.