簡體   English   中英

解析時,字符串未被識別為有效的DateTime

[英]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/201313/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM