如何获得下个月的日子?

时间:2018-07-27 11:54:17

标签: c# datetime daycount

我要实现的目标

我正在尝试获取两个月(当前)和下个月的天数。实际上,我可以使用该代码成功实现此目标:

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月份中的新年?

2 个答案:

答案 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

Try it Online!

奖金:您可以阅读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);
    }