假設我給了一個日期,從中我可以得到一個月的每一天和一週中的某一天。例如(在Javascript):考慮到工作日和月份的日期,我可以在常量時間內獲得序號位置嗎?
var d = new Date(1316038581772); // Wed Sep 14 2011 12:16:21 GMT-1000
var dayOfWeek = d.getDay(); // 3 - Wednesday
var dayOfMonth = d.getDate(); // 14 - Day of month
我正在尋找一個值n
使得該日期是在本月七日的n
日一天。在這種情況下,我正在尋找2011年9月第二個星期三的n=2
。
該樸素算法將查找該月的第一個平日,以天爲單位,併除以7 ,但這不是固定的時間。例如,我需要從9月7日的第一天到每週第一個星期三迭代。
是否有恆定時間解決此問題?
(任何有興趣,我試圖生成的iCalendar復發規則序號值;給定一個日期,生成每月的第n
一天每月復發這種情況下,規則會是這樣的
RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=WE;BYSETPOS=2
或
RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=2WE
)
這是一種很好的方式來獲得我期待的英語短語,但我真的只是在尋找'Math.ceil((今天)/ 7)'部分。如果我今天沒有腦力激盪,我可能會自己偶然發現它。 – tad