gpt4 book ai didi

两个日期之间的 C# 时间段(以周为单位)

转载 作者:行者123 更新时间:2023-11-30 21:30:33 38 4
gpt4 key购买 nike

我有一个网络应用程序,用户将在其中输入 2 个日期。一个 StartDate 和一个 EndDate。现在我想编写它,以便在选择 StartDateEndDate 时确定有多少周,然后显示这些周的日期,例如,如果用户选择01-11-2018 作为 StartDate 和 31-12-2018 作为 EndDate 然后我想显示以下内容并记住周数仅供引用它看起来如何:

  1. 第 98 周:2018 年 11 月 1 日 - 2018 年 11 月 3 日
  2. 第 99 周:2018 年 11 月 4 日 - 2018 年 11 月 10 日
  3. 第 100 周:2018 年 11 月 11 日 - 2018 年 11 月 17 日

我已经通过使用 this 获得了周数上一篇文章。

现在我只想显示所有周中的每个周的开始和结束日期。我尝试创建一个包含周数的 list,然后使用 Foreach 检查添加的周数,但这不太正确。我只是在寻找实现此目标的最有效方法。

还检查过类似问题的链接是: Link1

最佳答案

我做了这个片段...不确定是否一切都符合规范:

var startDate = new DateTime(2018, 11, 1);
var endDate = new DateTime(2018, 12, 31);

int diff = (7 + (startDate.DayOfWeek - DayOfWeek.Monday)) % 7;
var weekStartDate = startDate.AddDays(-1 * diff).Date;
var i = 1;
var weekEndDate = DateTime.MinValue;
while(weekEndDate < endDate) {
weekEndDate = weekStartDate.AddDays(6);
var shownStartDate = weekStartDate < startDate ? startDate : weekStartDate;
var shownEndDate = weekEndDate > endDate ? endDate : weekEndDate;
Console.WriteLine($"Week {i++}: {shownStartDate:dd MMMM yyyy} - {shownEndDate:dd MMMM yyyy}");
weekStartDate = weekStartDate.AddDays(7);
}

这假设您的周“正在计算”,从开始日期所在的那一周开始,并将星期一用作一周的第一天,星期日作为最后一天(您看到的范围是星期一 - 星期日,除了第一个/last week,如果碰巧不是星期一或星期日,它将使用开始/结束日期)

您可以在这里在线运行它:https://dotnetfiddle.net/jJ4Ydu

如果你还需要知道是一年中的哪一周,那么就看你是.NET风格还是ISO8601风格了……典型的是后者,你可以使用,比如在 this answer 上找到的方法,所以它看起来像:https://dotnetfiddle.net/oJscjF

请注意 2018 年 12 月 31 日(即星期一)在 ISO8601 上是 2019 年的第 1 周,而在 .NET 上是第 53 周

关于两个日期之间的 C# 时间段(以周为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54214322/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com