在巴西,我的发薪日发生在每个月的第5天。
但如果第5天是星期六/星期日,那么付款将在第4天发生。
如果第四周六/星期日,则相同:然后付款将在第3天发生。等等。
有没有办法创建适用于Google日历和iCal的活动?
答案 0 :(得分:4)
您可以通过iCalendar实现这一目标,至少就周末而言。
考虑以下规则:
DTSTART;TZID=US-Eastern:20160505T000000
RRULE:FREQ=MONTHLY;BYMONTHDAY=1,2,3,4,5;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1
该规则评估如下:
FREQ=MONTHLY;BYMONTHDAY=1,2,3,4,5
:扩展到每个月的第1天,第2天,第3天,第4天和第5天BYDAY=MO,TU,WE,TH,FR
:按工作日过滤,仅保留工作日/删除周末BYSETPOS=-1
:仅保留设置的最后一天您可以在http://recurrence-expansion-service.appspot.com/
验证结果虽然在假期中无法实现这一目标。
<强>更新强>
实际上足以指定
RRULE:FREQ=MONTHLY;BYMONTHDAY=3,4,5;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1
由于周末最多2天,因此发薪日必须在当月的第3天,第4天或第5天之一。同样,这不考虑假期。
假期总是需要特别考虑。 RRULE
不仅在任意日子都不支持这种逻辑,有时候很难甚至不可能由RRULE自己表达假期。在某些国家/地区,某些节假日始终在特定日期,除非周末是假日,在这种情况下,假期是在周末之前或周末之后。或者考虑相对于复活节日期的复活节日期和假日,它们根本不能由RRULE表达。
不要忘记,有些假期可能会偶尔发生变化(例如&#34;国王和#34;或者&#34;女王的日子和#34;在某些国家/地区)。
您可以做的最好的事情就是手动管理这些内容,并根据上面的RRULE,如果发薪日会在假期中发生,则添加RDATE和EXDATE。