我正在编写一个返回月的最后一个星期六的方法
public static DateTime LastDayOfTheMOnth(DateTime Date)
我不知道如何开始,在Java中很简单,但在C#中则更加困难
答案 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;
}
洛杉矶,