【问题标题】:how to check date in c#? (interactive program)如何在c#中检查日期? (互动节目)
【发布时间】:2018-09-10 17:17:11
【问题描述】:

我正在学习创建一个交互式程序,用户可以在其中分别输入他们的确切生日(月;日,年),但我不知道如何使用DateTime.Now 属性。我知道month 必须是从 1 到 12 所以我写了

if (month<1  && month>13)
{Console.WriteLine("error");}

+"year" 字段,必须是 18 到 100 年前。我用过

if(year >2000 &&year <1918)
{Console.WriteLine("error");}

问题是,我必须每年更改条件。我还想检查"day" 字段和month 字段之间的关系。例如二月只有 28 天;如果day字段超出,提示“错误”。我知道这很复杂,但我不太了解DateTime 属性以及如何将其与条件语句配合使用。请帮忙。谢谢

【问题讨论】:

  • 顺便说一句,那些 if 语句永远不会是真的。您不能同时大于 13 和小于 1。使用||(我认为您的意思是>=13)
  • 如果这些答案提供了解决方案,标记为正确,或者如果您有自己的合适答案,请回答您自己的问题并将其标记为正确,以帮助未来的读者

标签: c# datetime if-statement


【解决方案1】:
 dateString = "2011-29-01";//concatenate fields to get date
 string format = "yyyy-dd-MM";
 try
 {
   //for ParseExact : https://msdn.microsoft.com/en-us/library/w2sa9yss(v=vs.110).aspx
   result = DateTime.ParseExact(dateString, format, provider);
   Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
  }
  catch (FormatException)
  {
    Console.WriteLine("{0} is not in the correct format.", dateString);
   }

   if(result.AddYears(18)<=Datetime.now){
   //write your logic
   }

【讨论】:

  • 这没有任何解释,是一个 A/B 解决方案。您也没有解释从哪里获得提供者。
【解决方案2】:

你可以使用

DateTime.Year Property

获取此实例表示的日期的年份部分。

DateTime.DaysInMonth Method (Int32, Int32)

返回指定月份和年份的天数。

例如

var currentYear = DateTime.Now.Year;

if (year > currentYear - 18 || year < currentYear - 118)
{
   Console.WriteLine("error"); 

}

var days = DateTime.DaysInMonth(year, 2);

// calculate the days in February for a given year
if (day > days || day < 0)
{
   Console.WriteLine("error");

}

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2017-09-02
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多