- 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의 일자차를 구하는 코드를 작성할수 있었다.