2

转换为 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);
4

4 回答 4

4

您可以使用 thje 格式,请注意月份使用d/M/yyyy的单曲。M

Follow.RequestDate = DateTime.ParseExact(lbl_RequestDate.Text, "d/M/yyyy", provider, DateTimeStyles.None);

该方法:provider.DateTimeFormat.GetAllDateTimePatterns()返回几乎 155 种格式,但它们(从您当前的文化似乎)都不支持格式d/M/yyyy,这就是您遇到异常的原因。如果您的日期为 Month,13/02/2013则该方法返回的格式将起作用,因为最接近dd/MM/yyyy的格式位于格式数组中。

于 2013-02-13T09:26:34.450 回答
2

也许这会有所帮助:

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) 
于 2013-02-13T09:24:45.450 回答
1

试试这样:

Follow.RequestDate = DateTime.ParseExact(lbl_RequestDate.Text, "d/M/yyyy", CultureInfo.InvariantCulture);
于 2013-02-13T09:26:46.867 回答
1

DateTimeFormatInfo.GetAllDateTimePatterns()方法在我的机器上返回(tr-TR文化)29 格式,但这些都不支持d/M/yyyy日期格式,这就是你得到FormatException.

但是在我的文化DateSeparator.,我不能完全解决这个问题,CultureInfo.CurrentCulture但是当我使用埃及文化信息(它写在你的个人资料上)时,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)
{
    ///
}

在此处输入图像描述

于 2013-02-13T09:30:53.077 回答