【问题标题】:Find the difference in C# for two dates在 C# 中查找两个日期的差异
【发布时间】:2015-11-02 08:42:40
【问题描述】:

我正在尝试为班级创建这个 ATM 应用程序,但我的代码不断出错。它运行良好,直到我到达这里并且控制台显示“输入今天的日期,然后立即中断。

我在使用DateTime 格式时遇到问题,我找不到适合我程序所需的响应。只要您不回溯上一个日期,它就必须能够读取任何日期。我只是想在我继续之前得到它的一部分,但这个错误不允许我走得更远。

//For Marking First Date
    private void getDate_1()
    {

        Console.WriteLine("Enter today's date (mm/dd/yyyy): ");

        String mydate = Console.ReadLine();
        date1 = Convert.ToDateTime(mydate);
        dateflag = true;

     }

    //For Marking Last Date
    private void getDate_2()
    {
        String date;
        Console.Write("Enter Date: ");
        date = Console.ReadLine();
          date2 = Convert.ToDateTime(date);

       // if (first_date.DayOfYear > last_date.DayOfYear)

        }

【问题讨论】:

  • 您是否尝试将字符串转换为日期然后比较日期?
  • "我遇到了日期时间格式的问题,我找不到适合我程序所需的响应。" - 什么格式?你的意思是解析?如果您要在提示中指定格式,我建议您使用DateTime.TryParseExact 并在那里指定格式。目前还不清楚您的问题是获取日期还是比较它们......
  • 使用DateTime.TryParse() 而不是Convert.ToDateTime()

标签: c# date time


【解决方案1】:

为防止区域设置影响您的日期解析,请使用特定的转换格式。你也需要DateTime.TryParseExact

DateTime d;
if (!DateTime.TryParseExact(Console.ReadLine(), "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out d))
{
    Console.WriteLine("An invalid date format was supplied.");
}

【讨论】:

    【解决方案2】:
    private void getDate_1()
    {
        var flag = true;
        while (flag)
        {
           Console.WriteLine("Enter today's date (mm/dd/yyyy): ");
           String mydate = Console.ReadLine();
           try 
           {
               date1 = Convert.ToDateTime(mydate);
               dateflag = true;
               flag = false;
           }
           catch (Exception e)
           {
               Console.WriteLine("Wrong format, try again: ");
           }
        }
     }
    

    【讨论】:

    • 那么你会为 getDate_2() 做同样的事情吗
    【解决方案3】:

    你应该使用Datetime.Compare方法

    类似的东西

     DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0);
     DateTime date2 = new DateTime(2009, 8, 1, 12, 0, 0);
     int result = DateTime.Compare(date1, date2);
    

    【讨论】:

      猜你喜欢
      • 2019-07-27
      • 2014-08-15
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      • 2016-11-30
      • 2013-10-28
      • 1970-01-01
      • 2013-10-02
      相关资源
      最近更新 更多