2015-11-02 30 views
1

我正在嘗試爲類創建此ATM應用程序,並且我的代碼不斷破壞。它運行良好,直到我來到這裏,控制檯顯示「輸入今天的日期,然後立即中斷。在兩個日期找到C#中的區別

我遇到了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) 

     } 
+0

你嘗試字符串轉換爲日期,那麼比較日期? –

+3

「我在使用DateTime格式時遇到問題,無法找到適合該程序所需的響應。」 - 什麼格式?你的意思是解析?如果你要在提示中指定格式,我會建議使用'DateTime.TryParseExact'並在那裏指定格式。你不知道你的問題是*得到*日期或比較它們... –

+1

使用'DateTime.TryParse()'不'Convert.ToDateTime()' – Fabjan

回答

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

所以你會做同樣的getDate_2() – 89fiveohgt

+0

完全相同相同 – GregoryHouseMD

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);