【算法】推導某天爲一年中第幾周

推導某天爲一年中第幾周

  • 問題:已知,某天爲一年中的第幾天,以及該天爲星期幾。求,該天爲一年中的第幾周?
  • 週一到週日,用(1~7)表示。

推導

  1. 求該天在理想狀態下(1月1號爲星期一,也就是第一週起始),應爲星期幾,即爲x。
  2. 用該天實際星期y減去x,求得偏差。
  3. 若偏差小於0,則加上7。求得結果z。
  4. 該天在一年中爲第p天,用p加上z。
  5. 步驟4的結果,除以7,得到結果W。用步驟4的結果,以7爲模,求餘數Y。
  6. 如果Y不等於0,則W=W+1。最終求得的結果W,即爲該天在一年中的週數。
  • 僞代碼
// yDay表示爲一年中第幾天
// week表示星期幾(1~7)
getWeeksOfYear(yDay, week)
{
	// 理想狀態下,應爲星期幾
	originWeek = yDay % 7;
	weekShift = week - originWeek;
	// 如果偏差小於0,則補7
	if (weekShift < 0) {
		weekShift = weekShift + 7;
	}

	// 利用偏差重新計算
	newYDay = yDay + weekShift;
	weekYear = newYDay / 7;
	weekYearShift = newYDay % 7;
	if (weekYearShift != 0) {
		weekYear = weekYear + 1;
	}

	// 求得最終結果
	return weekYear;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章