2014-01-16 209 views
-1

我遇到了DateTime.ParseExtract問題。錯誤是String was not recognized as a valid DateTimeC#將日期從字符串轉換爲日期格式

sqlserver 2012中的trialDate定義爲folllow type = date,它以這種格式顯示 MM/dd/yyyy。我猜這是sqlserver的默認值。我不知道如何將其更改爲 dd/MM/yyyy或dd-MM-yyyy。

當我顯示在ListView我這樣做的日期(把口罩): '

下面是C#代碼隱藏

string sTrialDate = ""; 
    foreach (ListViewDataItem item in ListView1.Items) 
    { 
     CheckBox MyCheckBox = (CheckBox)item.FindControl("MyCheckBox"); 
     if (MyCheckBox.Checked) 

     { 
      Label myTrialDate = (Label)item.FindControl("trialDatelbl"); 
      sTrialDate = myTrialDate.Text; 
     } 
    } 

問題是DATETIME.ParseExtract,這是我到目前爲止所嘗試的:

DateTime dt = DateTime.ParseExact("sTrialDate", "MM/dd/yyyy", 
      System.Globalization.CultureInfo.InvariantCulture); <=== not working 

    DateTime dt = DateTime.ParseExact("sTrialDate", "dd/MM/yyyy", 
      System.Globalization.CultureInfo.InvariantCulture); <=== not working 

    DateTime dt = DateTime.ParseExact("sTrialDate", "dd/MM/yyyy ", 
      System.Globalization.CultureInfo.InvariantCulture); <=== not working 

    DateTime dt = DateTime.ParseExact(Request.QueryString["sTrialDate"], "dd/MM/yyyy", null);    
                       <==not working 
+7

'「sDateRdv」'看起來並不像一個日期我。 –

+0

我改變了對不起,它應該sTrialDate – user3127986

+1

'「sTrialDate」'也不像日期! –

回答

6

你好像是在誤用ParseExact。你正在做的:

ParseExact("sDateRdv", "MM/dd/yyyy") 

正試圖解析字符串sDateRdv爲日期,顯然失敗。如果sDateRdv是包含你的約會一個變量,那麼你應該使用:

ParseExact(sDateRdv, "MM/dd/yyyy") 

在您的最後一個例子,你應該檢查什麼的Request.QueryString["sTrialDate"]值。這是一個有效的日期字符串嗎?

最後,您將討論sqlserver中的日期以及如何更改其表示形式。答案是你不是真的。日期是一個日期,並且與它的顯示方式無關。當你看它時,它會被轉換成一個可讀的字符串(因爲這就是我們所讀的),但並不代表它是如何存儲的。你可以把它看作一個整體的日期(所以從數據庫到你的C#代碼中將它作爲DateTime),你只能將它轉換爲一個字符串來顯示或者可能是某種序列化(例如XML)。

+0

相同的錯誤字符串未被識別爲具有DateTime的有效DateTime dt2 = DateTime.ParseExact(sTrialDate,「dd/MM/yyyy」,System.Globalization.CultureInfo.InvariantCulture); OR DateTime dt2 = DateTime.ParseExact(sTrialDate,「MM/dd/yyyy」,System.Globalization.CultureInfo.InvariantCulture);如果字符串格式爲「dd-MM-YYYY」,那麼字符串格式爲dd-MM-YYYY – user3127986

+0

那麼爲什麼不只是將日期格式更改爲?如果您提供的格式和字符串的格式不同,那麼當然會有錯誤。我不確定你在這裏問什麼...... – Chris

+0

由於我的數據庫格式是DATE類型,我們有任何選項可以將DATETIME更改爲DATE嗎?在C#中似乎沒有DATE格式。我想如果我想與沒有時間的SQL的DATE格式進行比較,我將不得不放棄TIME。 – user3127986

0

除了事實,你不應該通過你在報價變量:

DateTime dt = DateTime.ParseExact(sDateRdv, "MM/dd/yyyy", 
      System.Globalization.CultureInfo.InvariantCulture); 

    DateTime dt = DateTime.ParseExact(sDateRdv, "dd/MM/yyyy", 
      System.Globalization.CultureInfo.InvariantCulture); 

    DateTime dt = DateTime.ParseExact(sDateRdv, "dd/MM/yyyy ", 
      System.Globalization.CultureInfo.InvariantCulture); 

你也可以試試這個:

DateTimeFormatInfo dtfi = new DateTimeFormatInfo(); 
dtfi.ShortDatePattern = "dd-MM-yyyy"; 
DateTime objDate = Convert.ToDateTime(someStringWithDate, dtfi) 
相關問題