[英]String was not recognized as a valid DateTime when parse exact
轉換為DateTime時出現以下異常:
String was not recognized as a valid DateTime.
lbl_RequestDate.Text = "13/2/2013";
CultureInfo provider = CultureInfo.CurrentCulture;
string[] format = provider.DateTimeFormat.GetAllDateTimePatterns();
Follow.RequestDate = DateTime.ParseExact(lbl_RequestDate.Text, format, provider, DateTimeStyles.None);
您可以使用格式d/M/yyyy
,注意本月使用的單個M
Follow.RequestDate = DateTime.ParseExact(lbl_RequestDate.Text, "d/M/yyyy", provider, DateTimeStyles.None);
方法: provider.DateTimeFormat.GetAllDateTimePatterns()
返回近155種格式,但沒有一種(來自您當前的文化)支持格式d/M/yyyy
,這就是您獲得異常的原因。 如果您的日期為月13/02/2013
日為13/02/2013
月13/02/2013
日,那么該方法返回的格式將起作用,因為格式數組中最接近的格式為dd/MM/yyyy
。
也許這會有所幫助:
DateTime.ParseExact("13/2/2013","d/M/yyyy",CultureInfo.GetCultureInfo("en-US"), DateTimeStyles.None );
注意 :
d is for Day (01 is also acceptable)
M is for Month (11 is also acceptable)
試試這樣:
Follow.RequestDate = DateTime.ParseExact(lbl_RequestDate.Text, "d/M/yyyy", CultureInfo.InvariantCulture);
DateTimeFormatInfo.GetAllDateTimePatterns()
方法在我的機器上返回( tr-TR
Culture)29格式,但這些都不支持d/M/yyyy
日期格式,這就是你獲得FormatException
的原因。
但在我的文化中, DateSeparator
是.
所以我無法使用CultureInfo.CurrentCulture
完全解決這個問題但是當我使用埃及 cultureinfo(它是在你的個人資料上寫的) CultureInfo.GetCultureInfo("ar-EG")
這段代碼沒有任何錯誤;
CultureInfo provider = CultureInfo.GetCultureInfo("ar-EG");
string[] format = provider.DateTimeFormat.GetAllDateTimePatterns();
DateTime d = DateTime.ParseExact("13/02/2013", format, provider, DateTimeStyles.None);
不幸的是,您的所有日期時間模式都不支持d/M/yyyy
格式。
不幸的是 ,將此字符串更改為
13/02/2013
並不能解決這個問題,因為正如我之前所說,我的所有格式(在
tr-TR
文化中)也不支持
dd/MM/yyyy
格式。
我的謙卑建議在這里,列出你所有的日期時間模式,並手動檢查你的字符串是否是這個日期時間模式的識別格式,如;
string[] format = provider.DateTimeFormat.GetAllDateTimePatterns();
foreach (var f in format)
{
///
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.