【问题标题】:How to get week ending date using current week?如何使用当前周获取周结束日期?
【发布时间】:2022-12-07 07:39:58
【问题描述】:

我正在尝试使用当前周获取周结束日期。我的问题是一周的结束日期不是星期五。对于前。对于 2023 年 1 月,第 5 周的结束日期是 31,即星期二,我当前的代码返回 2 月 3 日,即该周的星期五。

这是我到目前为止尝试过的代码。

var today = DateTime.Today;
DateTime weekEndingDate = today.AddDays(-(int)today.DayOfWeek).AddDays(5);

我需要的是当星期结束日期是星期二时,它会在星期二返回。

【问题讨论】:

  • 我有点困惑。你说“使用当前周”,然后继续说话,就好像你会写一个通用方法一样:“例如,2023 年 1 月”到底是什么?你的输入参数是什么?
  • 该参数是当前周,我只是假设当我在 2023 年 1 月的第 5 周时,我得到的是 2 月 3 日,而不是 1 月 31 日。我当前的代码正在运行,例如。今天 12 月 6 日,我的代码在 12 月 9 日返回。这是正确的。
  • 我对你的理解是否正确,“周末”是下周五还是月底? "29 Jan 2023 -> 31 Jan 2023"(月底),但"17 Jan 2023 -> 20 Jan 2023"(下周五)?
  • 当前星期五(本周结束日期)

标签: c# datetime


【解决方案1】:

蛮力。

using System;

DateTime dt = DateTime.Now;

var eow = GetEndOfWeek(dt);

Console.WriteLine(eow.ToString("D"));

dt = new DateTime(2022, 12, 31); // new years eve - on a Saturday

eow = GetEndOfWeek(dt);
Console.WriteLine(eow.ToString("D"));

DateTime GetEndOfWeek(DateTime date, DayOfWeek endOfWeek = DayOfWeek.Friday)
{
    if (date.DayOfWeek == endOfWeek) return date;

    int month = date.Month;

    while (date.Month == month && date.DayOfWeek != endOfWeek)
    {
        date = date.AddDays(1);
    }

    if (month != date.Month) date = date.AddDays(-1);

    return date;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-02
    • 2014-05-18
    • 2010-11-19
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    相关资源
    最近更新 更多