如何在 c# 中獲得一個月后的下一個特定日期,例如,如果今天是我需要在1 個月后獲得第一個,但以更通用的方式,例如,如果今天是我需要獲得第一個一個月后。Monday Monday17/11/2021Wednesday Wednesday
我正在使用此功能,但它將在下周而不是下個月回傳:
public static DateTime GetNextWeekday(DateTime start, DayOfWeek day)
{
// The (... 7) % 7 ensures we end up with a value in the range [0, 6]
int daysToAdd = ((int)day - (int)start.DayOfWeek 7) % 7;
return start.AddDays(daysToAdd);
}
uj5u.com熱心網友回復:
典型的月份有30或31幾天,但是,一周的下一個同一天將在28( 4 * 7) 或35( 5 * 7) 天之后。我們需要妥協。讓February添加28天數和所有其他月份添加35天數:
public static DateTime GetSameDayAfterMonth(DateTime start) =>
start.AddDays((start.AddMonths(1) - start).TotalDays < 30 ? 28 : 35);
當然,您可以詳細說明其他規則:例如,當添加28天數后我們仍處于同一個月 ( 1 May 28 days == 29 May) 時,我們應該添加35:
public static DateTime GetSameDayAfterMonth(DateTime start) =>
start.AddDays(start.Month == start.AddDays(28).Month ? 35 : 28);
uj5u.com熱心網友回復:
將一個月而不是一周添加到開始日期:
public static DateTime GetSameDayAfterMonth(DateTime start)
{
var compare = start.AddMonths(1);
// The % 7 ensures we end up with a value in the range [0, 6]
int daysToAdd = ((int)start.DayOfWeek - (int)compare.DayOfWeek) % 7;
return compare.AddDays(daysToAdd);
}
例子:
var dayInNextMonth = GetSameDayAfterMonth(DateTime.Parse("2021-11-17")); // 2021-12-15
var weekday = dayInNextMonth.DayOfWeek; // Wednesday
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/360502.html
標籤:C# 网站 asp.net-mvc 约会时间
