簡體   English   中英

獲取給定日期的開始周的日期 c#

[英]Get the date of the start week of a given date c#

我試圖從給定日期開始一周。 例如,如果我傳入 16/08/2018 的 DateTime,我希望返回 13/08/2018。 我發現的一切都是找到本周的開始。

我會做這樣的事情:

將日期從字符串解析為 DateTime 對象(如果需要)

添加一周中的當前天數 * -1(將其變為負數)+ 1

string s = "2018-08-23 13:26";

DateTime dt = DateTime.ParseExact(s, "yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture);

DateTime startOfWeek = dt.AddDays(((int)(dt.DayOfWeek) * -1) + 1);
Console.WriteLine(startOfWeek);

這是一個小提琴


編輯:如果您對星期日到下星期一感到困擾,那么請更改星期日以從當前日期中刪除 7 天,如下所示;

string s = "2018-08-17 13:26";

DateTime dt = DateTime.ParseExact(s, "yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture);

bool isSunday = dt.DayOfWeek == 0;
var dayOfweek = isSunday == false ? (int)dt.DayOfWeek : 7;

DateTime startOfWeek = dt.AddDays(((int)(dayOfweek) * -1) + 1);
Console.WriteLine(startOfWeek);

使用日期變量獲取一周中的星期一和星期日。 可以輕松嘗試使用日期變量。

DateTime date = new DateTime(2019, 12, 1);
int day = (int) date.DayOfWeek;
DateTime Monday = date.AddDays((-1) * (day == 0 ? 6 : day - 1));
DateTime Sunday = date.AddDays((1) * (day== 0 ? day : 7 - day)); ```

超級簡單! 您可以使用 DayOfWeek 來獲取您必須走多遠。 更多信息可在此處獲得

星期日為 0,星期一為 1。

DateTime date = DateTime.Now; //gets current time
int day = date.DayOfWeek; //gets current day
DateTime Sunday = date.AddDays( (-1) * day ); //go back all the days to get to Sunday
DateTime Monday = date.AddDays( (-1) * (day - 1) ); //go back all the days - 1 to get to Monday

正如評論所指出的,如果當天是星期日,這將不起作用......所以星期一的修復是:

DateTime Monday = date.AddDays( (-1) * (day == 0 ? 7 : day - 1) ); //go back all the days - 1 to get to Monday

這是一個版本,為您提供一周中的星期一(假設周從星期一開始並在星期日結束)

DateTime dt = DateTime.Now;
DateTime startOfWeek = dt.AddDays((((int)(dt.DayOfWeek) + 6) % 7) * -1);    
Console.WriteLine(startOfWeek);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM