我要实现的目标
我正在尝试获取两个月(当前)和下个月的天数。实际上,我可以使用该代码成功实现此目标:
int monthDays = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
string[] days = Enumerable.Range(1, monthDays).Select(x => x.ToString("D2")).ToArray();
基本上,我使用了函数DaysInMonth
,然后生成了一个List<int>
来代表该月的日子。
问题
现在,我还想获得下个月的日子,但是我在处理以下情况时遇到了一些问题:
December 2018 (current)
January 2019 (next)
我尝试过的
您可以看到year
发生了变化,因此我为下个月编写的代码将失败:
var nextMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddMonths(1);
monthDays = DateTime.DaysInMonth(DateTime.Now.Year, nextMonth.Month);
days = Enumerable.Range(1, monthDays).Select(x => x.ToString("D2")).ToArray();
如何管理next
月份中的新年?
答案 0 :(得分:6)
使用AddMonth()
来添加一个月。最后,使用DaysInMonth
获取指定月份和年份的天数。
public static void Main()
{
// 12 for december as example
var current = new DateTime(DateTime.Now.Year, 12, DateTime.Now.Day);
var next = current.AddMonths(1);
Console.WriteLine(DateTime.DaysInMonth(next.Year, next.Month));
}
输出
31
奖金:您可以阅读AddMonth()
source。
答案 1 :(得分:-2)
public int GetDaysInMonth(DateTime date)
{
return DateTime.DaysInMonth(date.Year, date.Month);
}
public int GetDaysInNextMonth(DateTime date)
{
//Adding months will automatically sort out the year if need be
var nextMonth = date.AddMonths(1);
return DateTime.DaysInMonth(nextMonthDate.Year, nextMonthDate.Month);
}