本月的最后一天

时间:2019-02-22 09:31:19

标签: c# .net calendar

我正在编写一个返回月的最后一个星期六的方法

    public static DateTime LastDayOfTheMOnth(DateTime Date)

我不知道如何开始,在Java中很简单,但在C#中则更加困难

3 个答案:

答案 0 :(得分:1)

您可以在当前日期添加一个月,然后从该日期倒退。 取自here
我将其作为扩展方法,以便您可以从DateTime对象本身进行调用。

public static DateTime LastThursday(this DateTime time)
{
    DateTime date = new DateTime(time.Year, time.Month, 1).AddMonths(1).AddDays(-1);
    while (date.DayOfWeek != DayOfWeek.Thursday) {
        date = date.AddDays(-1);
    }
    return date;
}

可以称为

DateTime x = new DateTime(2019, 4, 22);
Console.WriteLine(x.LastThursday());

答案 1 :(得分:0)

首先,您需要获取特定月份中星期六的列表

 var daysInMonth = DateTime.DaysInMonth(year, month);
        List<DateTime> list = new List<DateTime>();

        for (int day = daysInMonth; day > 0; day--)
        {
            DateTime currentDateTime = new DateTime(year, month, day);
            if (currentDateTime.DayOfWeek == DayOfWeek.Saturday)
            {
                list.Add(currentDateTime);
            }
       }

其次,使用linq从列表中获取上一个星期六

 var result = list.OrderByDescending(d => d.Date).First();
       Console.WriteLine(result);
  

注意:您可以将DayOfWeek.Saturday更改为所需的任意一天

工作example

答案 2 :(得分:-1)

您可以使用:

    public static DateTime LastThursdayOfTheMonth(int month, int year)
    {
        DateTime date = new DateTime(year, month, DateTime.DaysInMonth(year, year));
        while (date.DayOfWeek != DayOfWeek.Thursday)
        {
            date = date.AddDays(-1);
        }
        return date;
    }

洛杉矶,