2016-11-19 96 views
2

enter image description here尋找從哪裏開始的日曆應用程序

計數您好,我是新來的,不太能找到一個答案,這個特定的Javascript的問題 - 基本上,我在HTML中做了一個日曆應用程序這由7行6列組成,週日在最左邊,週六在最右邊。我正在使用Javascript來填充每個單元格的相應日期編號。

此日曆應用程序需要能夠找出一週中的哪一天開始計算。因此,例如,如果有人使用應用程序下一個月,此應用程序將需要自動知道在星期四開始第1天;如果他們使用它兩個從現在開始,應用程序將需要在星期日等開始第1天,等等......

因此,如果你認爲星期日爲第0天,星期六爲第6天,需要一種方法來計算之後的天數星期天即第一天月中的某天開始。例如,如果一個月的第一天是星期三,則需要在星期日後的第一天開始第一天三天。如果該月的第一天是星期天,則需要在星期日後的第一天開始第一天

我需要使用什麼類型的算法才能正常工作?

回答

0

你基本上要求在日曆視圖中月份開始之前的偏移量(空天)。

這是最簡單的一個Date對象的工作,最重要的方法是(只有那些很可能與你無關):

  • 構造:new Date(<year>, <month>, <day>),月是從0開始的

  • 年份:getFullYear()setFullYear(<year>)

  • 月:getMonth()setMonth(<month>),月爲0,基於

  • 日:getDate()setDate(<day>)

  • 平日:getDay(),從0 =週日到6 =週六

所以你的情況是很容易的:

  1. 創建與本月第一天的日期(例如, 2016年11月:var d = new Date(2016, 10, 1);)。
  2. 致電d.getDay()獲取偏移量。

,如果您有周一的第一天(這是恕我直言更符合邏輯,即使聖經說你應該休息的第7天,而不是第一個;-)那麼公式將是(d.getDay() + 6) % 7或交替地產生日期從本月6日開始。週末不是這樣分開的,週末這個詞也意味着週六和週日將在本週結束。

這是一個實際的答案,但你可以自己做數學,但我真的不推薦它。你只需要知道一個日期的工作日和閏年的規則。所有的計算都可以從那裏完成。然而俗話說:不要重新發明輪子。

+1

非常感謝您的幫助。現在我的日曆工作得很好:) – Skipper

相關問題