【问题标题】:Check to see if year is leap year检查年份是否为闰年
【发布时间】:2016-09-28 00:06:31
【问题描述】:
<script Language="c#" runat="server">
  void Page_Load()
  {
   int currentYear = DateTime.Now.Year();

   if (currentYear % 400 == 0) {
     Message2.Text = ("This is a leap year");
   }
   else {
     Message2.Text = ("This is not a leap year");
   }

 }

目前我收到一个运行时错误。我的目标是使用 DateTime.Now.Year() 测试当前年份是否是闰年。我认为问题是我没有正确地将 year 转换为 int?请指教。

【问题讨论】:

  • Year 是属性而不是方法。所以,不需要调用括号 - int currentYear = DateTime.Now.Year;
  • 哦,哇,我真傻...谢谢!
  • 你为什么要在 400 之前这样做? 2016 年是闰年,但 2016/400 = 5.04
  • @Greg 好点!由于错误,我还没有完全理解逻辑,但我现在明白了!
  • Check leap year in C#的可能重复

标签: c# datetime


【解决方案1】:

你可以使用DateTime.IsLeapYear():

if (DateTime.IsLeapYear(year)) 
{
   //do stuff
}

【讨论】:

    【解决方案2】:

    对于那些来这里了解规则的人:

    根据wikipedia,这些额外的日子每年都会发生

    • 是4的整数倍。
    • 能被 100 整除的年不是闰年,除非能被 400 整除。

    所以这导致了这个函数:

    // PRE: no year < 1 or > 9999
    // POST: true if year is a leap year, or false if not.
    public static bool IsLeapYear(int year) 
    {
        if (year < 1 || year > 9999) 
        {
            throw new ArgumentOutOfRangeException("year", Environment.GetResourceString("ArgumentOutOfRange_Year"));
        }
        return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
    }
    

    现在我想知道如果我对 BC 使用负年会发生什么 - 实际上,问题是哪个日历甚至适用,尤其是在 1753 年之前(对于英国)? ;)

    【讨论】:

      【解决方案3】:

      我在闰年使用 C# 和这段代码。 干杯

      if ((jahr % 4 == 0 && jahr % 400 == 0) || (jahr % 4 == 0 && !(jahr % 100 == 0)))
      {
          Console.WriteLine(jahr + " ist ein Schaltjahr");
      }
      else
          Console.WriteLine(jahr + " ist kein Schaltjahr");
      

      【讨论】:

      • 欢迎来到 StackOverflow。请同时提供解释,而不仅仅是代码。
      【解决方案4】:
      static int GeveDays()
      {
          int days;
          if ((DateTime.Now).Year / 4 != 1 || (DateTime.Now).Year / 400 != 1) {
              Console.WriteLine("it is a common year");
              days = 365;
              return days;
          }
          else if ((DateTime.Now).Year / 100 != 1) {
              Console.WriteLine("it is a leap year");
              days = 366;
              return days;
          }
          else {
              Console.WriteLine("it is a leap year");
              days = 366;
              return days;
          }
      }
      

      【讨论】:

        【解决方案5】:
            int x= int.Parse(Console.ReadLine());
        
            if((x%400==0)||(x%100==0)||(x%4==0))
            {
                Console.WriteLine(" \n\n\n The year is a leap year ...!");
            }
            else
            {
                    Console.WriteLine("\n\n\n The year is not a leap year");
            }
        

        【讨论】:

        • 不鼓励只回答代码。
        • 你的 if 是错误的。应该是(x % 400 == 0 || x % 100 != 0 &amp;&amp; x % 4 == 0)
        【解决方案6】:

        多年的财产所以不需要括号...

        【讨论】:

          猜你喜欢
          • 2022-11-14
          • 2022-12-17
          • 2013-04-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多