문제

Google의 RFC2445 구현을 사용하고 있습니다 (http://code.google.com/p/google-rfc-2445/) 재발 규칙. 1 월 30 일부터 시작하여 월간 재발을 정의하면 30 일 미만 (예 : 2 월)이 완전히 건너 뜁니다. 따라서 Google API는 3 월 30 일, 4 월 30 일, 4 월 30 일 등을 돌려줍니다. 4 월 30 일 3 월 30 일, 2 월 28 일 1 월 30 일.

마찬가지로, 1 월 31 일의 시작 날짜를 선택하면 31 일 미만의 달이 건너 뛸 것입니다.

이것은 RFC2445 사양에 따라 정확하거나 버그 일 수 있습니다. 어떻게 생각해?

나의 주요 질문은, "매월 30 일에 되풀이되거나 30 일이 존재하지 않는 경우 달의 마지막 날"이라는 규칙을 정의 할 수있는 방법이 있다는 것입니다. 나는 그분이 있다고 믿지 않는다. 제안이 있습니까?

미리 감사드립니다.

안부, Cormac

도움이 되었습니까?

해결책

대답은 다음과 같습니다. freq = monthly; by monthday = 28,29,30; bysetpos = -1은 "매월 30 일에 반복되거나 30 일이 존재하지 않는 경우 달의 마지막 날"으로 변환됩니다.

다른 팁

RFC가 그 날짜를 건너 뛰는 것이 옳은 것 같습니다. 당신의 경우 DTSTART 1 월 31 일이며, 당신은 a를 지정하지 않습니다 BYMONTHDAY 당신의 재발 규칙에서 (또는 if BYMONTHDAY 31 일에 있습니다. 그러면 그러한 날이없는 몇 달 안에 그 규칙을 무시할 것입니다.

사용 가능한 범위 (예 : 2 월의 Monthday = 30)를 벗어난 BYXXX 규칙 부품 값이 발견되면 단순히 무시됩니다.

하지만, 당신은 -1을 지정할 수 있어야합니다 BYMONTHDAY 그리고 그 달의 마지막 날을 사용하도록하십시오.

Bymonthday 규칙 부분은 Comma 캐릭터 (ASCII Decimal 44) 분리 된 월 목록을 지정합니다. 유효한 값은 1 ~ 31 또는 -31 ~ -1입니다. 예를 들어 -10은 매월 10 일에서 마지막 날을 나타냅니다.

글쎄요 RFC 2445 그 자체로 당신이보고있는 행동이 정확한 것 같습니다.

사용 가능한 범위 (예 : 2 월의 Monthday = 30)를 벗어난 BYXXX 규칙 부품 값이 발견되면 단순히 무시됩니다.

내가 생각할 수있는 유일한 해결책은 다중 재발 규칙을 사용하는 것입니다. 즉, 매월 30 일, 2 월 마지막 날에는 하나입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top