为了账号安全,请及时绑定邮箱和手机立即绑定

获取给定日期的开始周的日期c#

获取给定日期的开始周的日期c#

C#
三国纷争 2021-12-05 14:47:26
我试图从给定日期开始一周。例如,如果我传入 16/08/2018 的 DateTime,我希望返回 13/08/2018。我发现的一切都是找到本周的开始。
查看完整描述

3 回答

?
森栏

TA贡献1810条经验 获得超5个赞

我会做这样的事情:


将日期从字符串解析为 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);


查看完整回答
反对 回复 2021-12-05
?
catspeake

TA贡献1111条经验 获得超0个赞

使用日期变量获取每周的星期一和星期日。可以轻松尝试使用日期变量。


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)); ```


查看完整回答
反对 回复 2021-12-05
?
潇湘沐

TA贡献1816条经验 获得超6个赞

这是一个版本,为您提供一周中的星期一(假设周从星期一开始并在星期日结束)


DateTime dt = DateTime.Now;

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

Console.WriteLine(startOfWeek);


查看完整回答
反对 回复 2021-12-05
  • 3 回答
  • 0 关注
  • 175 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信