確定一年的最後一天是否與下一年的第一天相同的一週中最簡單的方法是什麼?同年的最後一天與明年的第一天
回答
只需創建12月31日的DateTime對象。如果不是週六,那麼1月1日必須在同一周內。
DayOfWeek day = new DateTime(someYear, 12, 31).DayOfWeek;
if(day < DayOfWeek.Saturday)
// January 1st must be within the same week
編輯:正如Groo指出的那樣,本週的開始可能並不總是星期日。如果不是,那麼您可以使其成爲< = DayOfWeek.Saturday,或使用System.Globalization.CultureInfo.DateTimeFormat.FirstDayOfWeek + 7查找一週中的最後一天。
var lastDay = new DateTime(2009, 12, 31);
var firstDay = new DateTime(2010, 1, 1);
bool isSameWeek = (int)lastDay.DayOfWeek < (int)firstDay.DayOfWeek;
編輯:你沒問,但我認爲這是更有趣的計算,如果兩個日期落在同一個星期內。這也適用於你的問題,但它也從更一般的意義上解決了這個問題。它通過計算每個日期的開始時間來計算,然後比較日期時間值的日期部分是否相同(以防萬一不同時間傳入每個日期)。
/// <summary>
/// Determines whether two dates fall in the same week span.
/// </summary>
/// <param name="left">The left DateTime to compare.</param>
/// <param name="right">The right DateTime to compare.</param>
/// <returns>
/// </returns>
public bool IsSameWeek(DateTime left, DateTime right) {
return AreDatePartsEqual(GetStartOfWeek(left), GetStartOfWeek(right));
}
/// <summary>
/// Gets the start of week.
/// </summary>
/// <param name="date">The date.</param>
/// <returns></returns>
public DateTime GetStartOfWeek(DateTime date) {
return date.AddDays(-1 * (int)date.DayOfWeek);
}
/// <summary>
/// Compares two DateTimes using only the Date Part for equality
/// </summary>
/// <param name="left">The left DateTime to compare.</param>
/// <param name="right">The right DateTime to compare.</param>
/// <returns></returns>
public bool AreDatePartsEqual(DateTime left, DateTime right) {
return
left.Day == right.Day &&
left.Month == right.Month &&
left.Year == right.Year;
}
這很容易。如果最後一天不是星期天,那麼明年的第一天必須在同一周!
當然,這取決於當你開始一週。
使用領域知識解決問題?給予好評! – 2009-10-29 14:30:14
如果最後一天是星期六怎麼辦?這不是說明年(星期日)的第一天不在同一周嗎? (假設星期日是一週的第一天) – 2009-10-29 15:09:12
- 1. 第一天和最後一年的
- 2. PHP獲取一年給出明年的第一天
- 3. mysql每年的同一天
- 4. 查找今年的最後一天
- 5. 閏年的最後一天,第53或第1周?
- 6. SQL Server下一年的第一天?
- 7. 獲取所選月份和年份的第一天和最後一天?
- 8. 如何在c#中獲取今年的第一天和最後一天c#
- 9. 給周編號和年份找到星期的第一天和最後一天
- 10. MySQL去年同一天
- 11. 最簡單的方法來獲取與JodaTime每年的每個月的第一天和最後一天
- 12. MonthCalendar1選定年份的第一天
- 13. 獲得一個星期的第一天與最後一天
- 14. strtotime([月] [年]的第n天)
- 15. SQL從去年的同一天開始
- 16. 插入最後一天的第二天
- 17. 查找年度第一天(新年)的索引
- 18. Teradata確定年度第一天
- 19. 從sybase ase獲得上一年的最後一天
- 20. 集團月份又一年,月天/年
- 21. Vb.net添加年,然後去月的最後一天
- 22. 爲什麼今年的最後一天在甲骨文第一週?
- 23. 找到每年連續六天第一組的第一天並協調?
- 24. 訪問查詢,返回前一年的記錄,截至當天,與當天相同但前一年的記錄
- 25. 得到今天的第一天,最後一天
- 26. SQL檢索數據從一年前的一個月的第一天到今天
- 27. HQL中的一年中的哪一天?
- 28. Julianday得到的一年中的一天
- 29. 檢查一天是否是同一天(但不是一年)與時刻
- 30. 等於今天日期後一年
我想也許他的意思是同一周的數字。否則它會過於簡單(:)儘管如此簡單) – 2009-10-29 14:30:12
+1簡單 – JustLoren 2009-10-29 14:30:13
如果你的星期從星期一開始,你可能想用'if(day <= DayOfWeek.Saturday)'。 – Groo 2009-10-29 14:36:58