2013-06-13 251 views
0

在我的Web項目中,我解析日期選擇器中選擇的日期,並將其與從數據庫中獲取的日期進行比較,直到昨天它工作正常,但從今天早上它將拋出格式異常可能是什麼問題,字符串未被識別爲有效日期時間

我的代碼,

try 
     { 
      ReportDocument rpt = new ReportDocument(); 
      DateTime dt = DateTime.Parse(frmtxtdt.Text); // Exception Thrown here 
      DateTime dt1 = DateTime.Parse(frmtxtdt.Text); 
      DateTime date = DateTime.Parse(DateTime.Today.ToShortDateString()); 
      DateTime date1 = DateTime.Parse(DateTime.Today.ToShortDateString()); 
      string frtxt = String.Format("{0:MM-dd-yyyy}", dt); 
      string totxt = String.Format("{0:MM-dd-yyyy}", dt1); 
      DataSet ds = Namespace.SP.Storedprocedure(frtxt,totxt).GetDataSet(); 

      if (!IsPageRefresh) 
      { 
       if (ds.Tables[0].Rows.Count > 0) 
       { 
        if(frtxt == ds.Tables[0].Rows[0]["Date"].ToString() 
        && totxt == ds.Tables[0].Rows[0]["Date"].ToString()) 
        { 

          ds.Tables[0].TableName = "Passkeys"; 

          ds.WriteXml(Server.MapPath("~/XML/Passkeys.xml")); 
          string filename = Server.MapPath("~/Upload/Pkey_rpt.rpt"); 

          rpt.Load(filename); 
          rpt.SetDataSource(ds); 

          rpt.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, "Passkeys - " + ds.Tables[0].Rows[0]["Date"].ToString()); 
        } 

      } 
      else if(frmtxtdt.Text.Trim() !=null && totxtdt.Text.Trim()!=null) 
      { 
       if (frtxt == String.Format("{0:dd-MM-yyyy}", date) 
        && totxt == String.Format("{0:dd-MM-yyyy}", date1) 
        && ds.Tables[0].Rows.Count == 0) 
       { 

        ClientMessaging("Pass Key(s) Not Yet Delivered for the Selected Date..."); 

       } 
       else 
       { 

        ClientMessaging("There is No Schedule for the Selected date...."); 
       } 

      } 
     } 

     } 
     catch (Exception ex) 
     { 
      lblmsg.Text = ex.Message; 
     } 
+0

在該行的日期格式..? –

+0

frmtxtdt.Text的值是什麼? –

+0

這是什麼'DateTime日期= DateTime.Parse(DateTime.Today.ToShortDateString());'? 'DateTime.Today'實際上是'DateTime' – V4Vendetta

回答

2

要在CultureInfo的明確的基礎上,你希望解析

CultureInfo GBCultureInfo = new CultureInfo("en-GB"); // dd/MM/YYYY 
// CultureInfo USCultureInfo = new CultureInfo("en-US"); // MM/dd/YYYY 

dt = DateTime.Parse(frmtxtdt.Text,GBCultureInfo); 
+0

@ Paolo Falabella 非常感謝你的工作完美... – Rajesh

+1

@Rajesh據我所知,「ES-ES」代表西班牙語。但只要該文化中的日期格式與DateTime.Parse中的日期格式相同,就沒有問題。請注意,您正在使用您創建的CultureInfo對象作爲DateTime.Parse的參數。它不會改變其他代碼中的其他內容(除非明確地通過它)。 CultureInfo控制其他事物(例如十進制數的分隔符),但DateTime.Parse只關注日期格式,因此任何具有所需日期格式的CultureInfo都可以使用。 –

+0

@ Paolo Falabella 在MSDN網站中,它被提及爲 '//創建並初始化使用國際排序的CultureInfo。 CultureInfo myCIintl = new CultureInfo(「ES-ES」,false);'這樣我就可以使用「es-ES」現在我又改爲「en-GB」 – Rajesh

1

嘗試這樣的,地方的代碼

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");//you can change to any country 
    ReportDocument rpt = new ReportDocument(); 
3

今天是2013年6月的13日.它可能以前工作,因爲這一天是12或更少。您需要確保來自選取器的日期格式與解析時預期的格式相同。

目前,它看起來像解析一天中的月份。

相關問題