DateTime datuMDokumenta = Convert.ToDateTime(txtDatumDokum.Text);
txtDatumDokum.Text就像「09.09.2011」。DateTime FormatException錯誤
但我得到FormatException錯誤。我必須解析日期嗎?
DateTime datuMDokumenta = Convert.ToDateTime(txtDatumDokum.Text);
txtDatumDokum.Text就像「09.09.2011」。DateTime FormatException錯誤
但我得到FormatException錯誤。我必須解析日期嗎?
與DD.MM.YYYY格式字符串
DateTime.ParseExact(txtDatumDokum.Text, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None);
在我的電腦中它不起作用:( – Marco
thx它適用於我。所以我必須總是使用DateTime.ParseExact即使日期是有效的像dd.MM.yyyy – senzacionale
@senzacionale你不必使用parseexact,但它是如果您只是以某種特定格式收到日期,那麼建議您使用 –
這不是很好看嘗試DateTime.ParseExact,反正試試這個:
string s = "09.09.2011";
DateTime dt = Convert.ToDateTime(
s.Replace(".",
new System.Globalization.DateTimeFormatInfo().DateSeparator));
你需要爲什麼文字輸入使用這種格式來告訴我們。如果是因爲用戶以這種方式輸入它,那麼您需要確保格式與Thread.CurrentCulture.DateTimeFormat.ShortDatePattern
給出的格式相符。改變文化(通過設置 Thread.CurrentCulture
)爲合適的值將解決您的問題。
如果你應該解析輸入,不管它是什麼格式,那麼你需要先做一些手動處理(也許從輸入中用string.Replace
刪除空格和其他分隔符),然後嘗試解析日期使用DateTime.ParseExact
和一個已知的格式字符串。
但這一切都取決於爲什麼輸入具有該格式,以及爲什麼您的應用程序的當前文化與它不匹配。
becouse我使用date.ToString(「dd.MM.yyyy」)。我使用ToShortDateString然後我得到09/08/2011這是不正確的。我們的日期必須像08.09.2011 – senzacionale
Thread.CurrentCulture在緊湊框架中無效3.5 – senzacionale
@senzacionale:如果問題是關於CF 3.5,請標記爲這樣。 – Jon
你可以試試這個,TryParse避免解析異常。然後你只需要檢查結果以確保它解析。
DateTime datuMDokumenta;
bool result = DateTime.TryParse(txtDatumDokum.Text, out datuMDokumenta);
您必須確定這是否是您的應用程序的良好解決方案。
見這個例子: http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx
在你給你需要包括一個文化的日期來看,DE-DE接受11年1月1日類型的日期,但我不知道哪一個你真正想要使用,你需要決定..代碼是這樣的:
using System.Globalization;
DateTime datuMDokumenta;
bool result = DateTime.TryParse(txtDatumDokum.Text, CultureInfo.CreateSpecificCulture("de-DE"), DateTimeStyles.None, out datuMDokumenta);
文化的名單可以在這裏找到,爲您選擇合適的一個: http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo%28v=vs.71%29.aspx
釷這裏加上這個代碼是更多的工作,但它很難打破。假設您在TextBox上使用自由文本輸入,則不希望引發異常。
是的,你必須解析當前文化中的輸入日期。
string[] format = new string[] { "dd.MM.yyyy" };
string value = "09.09.2011";
DateTime datetime;
if (DateTime.TryParseExact(value, format, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.NoCurrentDateDefault, out datetime))
//Valid
else
//Invalid
的DateTime DT = Convert.ToDateTime(txtDatumDokum.Text)
這是正確的...沒有isssue
在緊湊的框架3.5下反序列化呼叫我有一些意外行爲之前。
我已經從使用OpenNETCF序列化類轉換爲框架XML序列化類。在此過程中,默認時間格式已更改,並且屬性/公共成員的順序已更改。長話短說,我公開了一個文本屬性,它將我的日期時間轉換回我的VB6應用程序期望的格式。
Dim dumbDate As New Date
Dim formats() As String = {"yyyy-MM-ddTHH:mm:ss.fffzzz", _
"yyyy-MM-dd HH:mm:ss:fffffffzzz"}
_datetimeTaken = dumbDate.ParseExact(value, formats, CultureInfo.InvariantCulture, DateTimeStyles.None)
' There is something wrong with compact framework during the Serialization calls.
' calling the shared method Date.Parse or Date.ParseExact does not produce the same
' result as calling a share method on an instance of Date. WTF?!?!?!
' The below will cause a "Format" exception.
'_datetimeTaken = Date.ParseExact(value, formats, CultureInfo.InvariantCulture, DateTimeStyles.None)
Date.blah不起作用。 dumbDate.blah的作品。奇怪。
我在dotNet4.0中也不例外。 – ARZ
嘗試檢查您是否未傳遞NULL或空字符串; –
你在使用哪種文化? –