找出两个日期的C#差异

时间:2015-11-02 08:42:41

标签: c# date time

我正在尝试为课程创建这个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)

        }

3 个答案:

答案 0 :(得分:3)

要防止区域设置对日期解析产生影响,请使用特定的转换格式。您还需要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.");
}

答案 1 :(得分:0)

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: ");
       }
    }
 }

答案 2 :(得分:0)

您应该使用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);