回答
這就是我使用(可能不是國際化):
DateTime input = //...
int delta = DayOfWeek.Monday - input.DayOfWeek;
DateTime monday = input.AddDays(delta);
是的,確實如此:沒有國際化。星期一併不總是一週的第一天。 – 2009-11-03 07:58:10
您可以使用以下方法獲取每週的第一天:CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek – 2009-11-03 08:03:33
實際上,根據文化的一週的第一天在這種情況下沒有興趣; OP需要一週的星期一,而不是一週的第一天。 – 2009-11-03 08:28:35
像這樣的工作
DateTime dt = DateTime.Now;
while(dt.DayOfWeek != DayOfWeek.Monday) dt = dt.AddDays(-1);
我敢肯定有一個更好的方式tho :)
試試這個:
public DateTime FirstDayOfWeek(DateTime date)
{
var candidateDate=date;
while(candidateDate.DayOfWeek!=DayOfWeek.Monday) {
candidateDate=candidateDate.AddDays(-1);
}
return candidateDate;
}
編輯的完整性:超載今天的日期:
public DateTime FirstDayOfCurrentWeek()
{
return FirstDayOfWeek(DateTime.Today);
}
爲什麼循環??,有辦法做到這一點沒有循環。見下面的答案 – 2009-11-03 07:59:29
的Pondium答案可以在某些情況下向前搜索。如果你想只向後搜索我覺得應該是:
DateTime input = //...
int delta = DayOfWeek.Monday - input.DayOfWeek;
if(delta > 0)
delta -= 7;
DateTime monday = input.AddDays(delta);
這應該是正確的答案,因爲它處理星期日,即FirstDayOfWeek是星期一,所以如果星期日是輸入日期,它應該返回星期一之前,接受的答案不會。 – 2014-04-24 13:51:09
+1如果'輸入'是2017年1月1日(星期日),則此代碼將在本週的第一天給出26/12/2016!不是2/1/2017(接受的答案給出!) – 2016-08-26 08:59:28
它也適用於01/01/2019 = 31/12/2018! – 2016-08-26 09:12:29
var now = System.DateTime.Now;
var result = now.AddDays(-((now.DayOfWeek - System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.FirstDayOfWeek + 7) % 7)).Date;
可能會回到你星期一。除非你使用週一不是一週的第一天的文化。
什麼:
CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek
爲什麼不使用本地的解決方案?
問題是要得到具體的日期(即2015-11-20)而不是將哪一天定義爲第一天。 – 2015-11-20 18:11:52
public static class DateTimeExtension
{
public static DateTime GetFirstDayOfWeek(this DateTime date)
{
var firstDayOfWeek = CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek;
while (date.DayOfWeek != firstDayOfWeek)
{
date = date.AddDays(-1);
}
return date;
}
}
國際在這裏。我認爲作爲擴展它可以更有用。
- 1. 本週星期一日期
- 2. 在SQL中獲取本週的星期一的完整日期?
- 3. 獲取本週的第一個/最後一個日期
- 4. 獲取本週的每個星期一和過去8周的日期?
- 5. 如何獲取當年第一個星期一的日期(php)?
- 6. osx星期一日期本週bash
- 7. Java - 獲取星期一的一週的日期在那一週給出一個日期
- 8. 如何使用星期編號獲取一週的星期一日期
- 9. 使用周在MySql中獲取本週的第一個星期第
- 10. C#獲取下一個第N個星期五日期從今天的日期
- 11. 試圖獲取當週的星期一的日期
- 12. 開始星期日的第一週的星期幾,星期六的星期的最後一天結束
- 13. 如果週六或週日落在星期一或星期日
- 14. 獲取基於給定日期的星期一至星期日
- 15. 從Python的日期列獲取周開始日期(星期日)
- 16. 獲取從給定日期星期一到星期五的星期日期
- 17. SQL Server:獲取一個月的第一週和第二週的日期範圍
- 18. Informatica - 獲取星期一的日期號
- 19. 獲取每週的第一個星期 - SQL
- 20. 在PHP中找出第n周的星期一的日期?
- 21. 獲取日期2星期一前
- 22. 從當前日期獲取星期幾,並指定星期的第一天
- 23. 查找本週星期一
- 24. 獲取本週的週一和週五的日期(PHP)
- 25. 獲取給定日期的週數(周從星期天開始)
- 26. strtotime認爲「下個月的第一個星期日」=星期三?
- 27. 如何獲得SAS中的前一個星期一(前一週的星期一)?
- 28. 獲取其中的幾個星期開始從第一個星期一PHP
- 29. 獲取一個月的每個第二個星期二的日期
- 30. 在SQL中使用今天的日期獲取星期日期(星期一)
看看這個問題:http://stackoverflow.com/questions/38039/how-can-i-get-the-datetime-for-the-start-of-the-week – 2009-11-03 07:53:33