去年的总天数

时间:2017-07-25 03:35:37

标签: c#

我有label1 label2和button1,其中我按下按钮1,label1文本将根据上个月的总天数(假设' 31'天)更改,label2文本将根据过去几年的总天数更改(let说' 365'天

我只知道如何使用 DateTime.DaysInMonth 对上个月的总天数进行编码,但 DateTime.DaysInYear 没有方法不是它

这是我的代码

private void button1_Click(object sender, EventArgs e)
{
    //Last Month
    string month = DateTime.Now.ToString("MM");
    int months = Int32.Parse(month);
    int previousmonths = months - 1;

    //Month in this Year
    string year = DateTime.Now.ToString("yyyy");
    int years = Int32.Parse(year);
    int daysmonth = DateTime.DaysInMonth(years, previousmonths);
    MessageBox.Show(daysmonth.ToString());

    //Last Year
    string year = DateTime.Now.ToString("yyyy");
    int years = Int32.Parse(year);
    int lastyears = years - 1;
    int daysyear = DateTime.DaysInYear(lastyears);
    MessageBox.Show(daysyear.ToString());
}

4 个答案:

答案 0 :(得分:6)

据我记得,一年(闰年)总有365天(366天)。

您只需使用DateTime.IsLeapYear

即可
public static int DaysInYear(int year)
{
    return DateTime.IsLeapYear(year) ? 366 : 365;
}

但是,看看你的代码,我认为你过于复杂了 您不需要将DateTime格式化为字符串,然后再次解析它。

您的代码可以更清晰地重写:

// Days in previous Month
var monthAgo = DateTime.Now.AddMonths(-1);
int daysMonth = DateTime.DaysInMonth(monthAgo.Year, monthAgo.Month); 
MessageBox.Show(daysMonth.ToString());

// Days in Previous Year
int daysYear = DaysInYear(DateTime.Now.Year - 1); // see my function above
MessageBox.Show(daysYear.ToString());

答案 1 :(得分:5)

上个月和去年有一些更优雅的方式。

var lastMonth = DateTime.Now.AddMonths(-1).Month;
var lastYear = DateTime.Now.AddYears(-1).Year;

从那里开始,获得一年中的天数就像耶尔达指出的那样简单:

var daysInLastYear = DateTime.IsLeapYear(yelastYear) ? 366 : 365;

答案 2 :(得分:0)

或者您可以使用此解决方案来帮助计算两天的计数

class sample2
{
    internal static void Test()
    {
        var sampleTarget = new DateTime(2016, 4, 1);

        var dayInYearForTarget = DayInYear(sampleTarget);
        Console.WriteLine("Date: {0} => {1}", sampleTarget, dayInYearForTarget);
        Console.ReadKey();
    }

    private static double DayInYear(DateTime target)
    {
        var date = target.Date;
        var year = date.Year;

        return date.Subtract(new DateTime(year, 1, 1)).TotalDays + 1;
    }
}

答案 3 :(得分:0)

您还可以使用Calendar类。 使用示例:

        var year = DateTime.UtcNow.AddYears(-1).Year;
        var daysInLastYear = Calendar.ReadOnly(new GregorianCalendar()).GetDaysInYear(year);