【问题标题】:Get days of a week, by a day of the month获取一周中的几天,一个月中的一天
【发布时间】:2021-07-30 12:30:44
【问题描述】:

我一直在寻找有关 stackoverflow 的信息,但我找不到如何在 C# 上解决以下问题。 我需要一种方法,我将发送一个 int(月份中的某天),它总是返回该天所属的一周中的星期一到星期五。

例如: 今天是 8 点,我需要该方法返回一个包含以下数字(3、4、5、6、7)的数组。

或者想象一下,即使它是 8,我发送给这个方法 19,它也会返回 (17, 18, 19, 20, 21) 对应17到周一,18到周二....

我没有任何代码,因为我不知道该怎么做。 希望你能帮助我!

非常感谢!

编辑:不只是发送日期,想象一下我发送一个简单的日期格式 08/05/2021

【问题讨论】:

  • 你真的只发送月份中的某一天而不指定月份和年份吗?
  • 你的一周从哪里开始?星期日?星期一?
  • 是的,你是对的。没想到,看看我所做的编辑,想象我看到了简单的日期格式。一周从星期一开始。
  • 如果我发送131 会怎样:我应该返回previuos下一个)月份的天数吗? IE。 int[] {29, 30, 1, 2, 3}
  • 每个日期时间都有一个名为DayOfWeek 的属性,您可以将其与the DayOfWeek enum 进行比较。现在可以使用 AddDays(-1) 将 DateTime 更改为之前的日期所以只需向后循环直到找到星期一枚举,此时您可以使用 AddDays(1) 轻松获得接下来的五天.来吧,让我们试试吧。你可以做到的

标签: c# calendar dayofweek


【解决方案1】:
private DateTime[] weekByDay(DateTime date)
{
  DateTime[] week = new DateTime[5];
  while (date.DayOfWeek != DayOfWeek.Monday) //while day is not monday
  {
    date = date.AddDays(-1); //substract 1 day to date
  }
  week[0] = date; //add the current day (monday), to the array
  for (int i = 1; i < 5; i++) //add the next day till Friday
  {
   date = date.AddDays(1);
   week[i] = date;
  }
  Console.WriteLine("MONDAY was " + week[0]);
  Console.WriteLine("TUESDAY was " + week[1]);
  Console.WriteLine("WEDNESDAY was " + week[2]);
  Console.WriteLine("THURSDAY was " + week[3]);
  Console.WriteLine("FRIDAY was " + week[4]);
  return week;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 2015-06-26
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多