C#如何检查今天是否是本月的第一个星期一?

Ste*_*ood 25 c# date

如何查看今天是否是本月的第一个星期一?

下面的代码给了我这个月的最后一天,我应该如何修改它?

DateTime today = DateTime.Today;
DateTime endOfMonth = new DateTime(
       today.Year, 
       today.Month, 
       DateTime.DaysInMonth(today.Year, today.Month)
);
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 40

怎么样:

DateTime today = DateTime.Today;
if (today.DayOfWeek == DayOfWeek.Monday && today.Day <= 7)
Run Code Online (Sandbox Code Playgroud)

找到这个月的第一个星期一比较棘手.目前尚不清楚您是否需要 - 请告诉我们您是否需要.

注意使用DateTime.Today 一次 - 这样你就不会得到潜在的奇怪现象,其中日期在被评估条件的两个部分之间变化.

  • @glowcoder:这样说 - 你怎么能做比第一种方法更好的事情?你有效地获得了比赛条件.想象一下,这是你评估条件的月份的第一个星期一,但是当你对这些信息进行*行动时,它会在星期二结束......那有什么不同?我认为没有任何合理的方法可以避免这种竞争. (3认同)
  • 你的最后一段引出了一个问题:"如果计算过程中的那一天发生了变化,你应该回归真实吗?" (2认同)

TDa*_*ver 19

bool isItFirstMonday = DateTime.Today.DayOfWeek == DayOfWeek.Monday 
                         && DateTime.Today.Day <= 7
Run Code Online (Sandbox Code Playgroud)

编辑:对不起,错字:)

  • IMO评估DateTime.Today两次是一个坏主意.想象一下,它将在本月的最后一天(即星期一)午夜到来.评估条件的第一部分并返回"true"(因为它是星期一).然后午夜点击,下个月的周二1点......所以第二部分也返回"真实"......尽管"旧"日和"新"日都不是本月的第一个星期一. (7认同)
  • @Jon Skeet:抱歉,我打字太快了,在一周的 168 小时内忘记停止那一微秒,但你当然是对的! (2认同)

cor*_*iKa 8

我不知道c#,但在任何语言中,它都是

if Today is monday, 
and Today's Date is 7 or less.
Run Code Online (Sandbox Code Playgroud)