반복 날짜의 다음 날짜가 잘못 표시됩니다

다음과 같이 반복 날짜를 설정하려고 합니다:

[date=2021-01-24 time=08:30:00 timezone="America/New_York" recurring="1.weeks"]

이 날짜는 미래이므로 다음 발생 시점으로 2021년 1월 24일이 표시되어야 합니다. 하지만 대신 2021년 2월 28일이 표시됩니다.

실제 날짜:
2021-01-24T13:30:00Z

게시물 미리보기 스크린샷 (미리보기에서 다르게 표시될 경우를 대비하여):
image


날짜를 2021-01-25로 변경하면 1일이 아닌 8일을 건너뛰어 2021년 3월 8일로 바로 이동합니다. 7일마다 일주일씩 더 건너뛰는 것 같아 날짜가 크게 어긋나는 것 같습니다. 제가 뭔가 잘못하고 있는 건가요? 일반적으로 미래의 반복 날짜를 만들거나, 특히 미래 연도의 날짜를 만들 때 엣지 케이스가 있는 것일 수도 있습니다.

2개의 좋아요

이 코드는 의도적으로 이렇게 작성된 것 같습니다. 재발행 날짜는 항상 현재 날짜와 오늘 사이의 차이 기반으로 계산되는 것 같습니다:

https://github.com/discourse/discourse/blob/master/plugins/discourse-local-dates/assets/javascripts/lib/local-date-builder.js.es6#L55

코드를 localDate.datetime으로 변경해 보니 브라우저에서는 출력이 정확했지만 4개의 테스트가 실패했습니다. 이 동작 방식을 검증하는 테스트인 것 같아서, 혹시 제가 놓치고 있는 부분이 있는 건지 궁금합니다 @j.jaffeux? 재발행은 현재 날짜가 아니라 사용자가 입력한 날짜 이후에 일어나야 하는 거 아닌가요?

4개의 좋아요

네, 맞습니다. 이 경우를 놓쳤던 것 같습니다. 대부분 과거 날짜를 생성하려고 할 때 반복 설정이 미래로 적용되는 상황을 주로 고려했었거든요. 다음 주에 확인해 보겠습니다.

7개의 좋아요

현재 검토 대기 중이며, 병합되면 이 문제가 해결될 것입니다:

리포트해 주셔서 감사합니다. 이 버그를 해결하게 되어 기쁩니다.

7개의 좋아요