【问题标题】:how to get a list of weekdays by giving a date as input in c#如何通过在c#中输入日期来获取工作日列表
【发布时间】:2023-03-12 05:32:01
【问题描述】:

假设我正在输入像 DateTime.Now 或 Date.Now 这样的日期,所以我需要的输出将是输入日期所在周的日期列表。

输入 = 2018 年 1 月 1 日

需要的输出 = {1/1/2018,2/1/2018,3/1/2018,4/1/2018,5/1/2018,6/1/2018,7/1 /2018}

 Dim today As Date = CDate(req.SelectedDate)
                                              Dim currentDayOfWeek As Integer = CInt(today.DayOfWeek)
                                              Dim sunday As DateTime = today.AddDays(-currentDayOfWeek)
                                              Dim monday As DateTime = sunday.AddDays(1)
                                              If currentDayOfWeek = 0 Then
                                                  monday = monday.AddDays(-7)
                                              End If
                                              Dim dates = Enumerable.Range(0, 7).[Select](Function(days) sunday.AddDays(days)).ToList()

【问题讨论】:

  • 希望我们完成您的工作吗?
  • 到目前为止你尝试过什么?你的代码是什么?你有DateTime.DayOfWeek,看看吧:msdn.microsoft.com/es-es/library/…
  • 星期天你的星期几开始?
  • 到目前为止你做了什么来实现它?
  • 我试了一下...我使用该日期随机输入一个日期,需要找到该日期的周日期...输入的日期不是特定的“星期日”、“星期一” ...

标签: c# asp.net vb.net


【解决方案1】:

你可以使用这个方法:

public static DateTime StartOfWeek(DateTime dt, DayOfWeek startOfWeek)
{
    int diff = (7 + (dt.DayOfWeek - startOfWeek)) % 7;
    return dt.AddDays(-1 * diff).Date;
}

static void Main(string[] args)
{
    DateTime dt = DateTime.Now;
    DateTime sow = StartOfWeek(dt, DayOfWeek.Monday);
    DateTime[] allWeekDays = Enumerable.Range(0, 7).Select(d => sow.AddDays(d)).ToArray();
}

【讨论】:

  • 如果你有文化,你可以从CultureInfo.DateTimeFormat.FirstDayOfWeek获得一周的开始。
猜你喜欢
  • 2013-11-28
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
  • 2017-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多