字符串未被识别为有效的DateTime

时间:2012-07-21 13:19:02

标签: c# asp.net datetime

“当我尝试将字符串转换为DateTime时,”字符串未被识别为有效DateTime“错误。

我使用getDate()方法将当前日期存储到我的数据库中。它被设置为DateTime。我检索了它并显示在DetailsView中。然后我从DetailsView检索并设置标签。

Label ForgotDatelbl = new Label();
ForgotDatelbl = (Label)DetailsView2.FindControl("ForgotPwLabel");

DateTime ForgotDate = DateTime.ParseExact(ForgotDatelbl.ToString(),
      "d/M/yyyy hh:mm:ss tt", null); //here is the error

if (DateTime.Now < ForgotDate.AddMinutes(3)) { 
} 

来源错误:

Line 28:             DateTime ForgotDate = DateTime.ParseExact(ForgotDatelbl.ToString(),"d/M/yyyy hh:mm:ss tt", null);
Line 29: 
Line 30:             if (DateTime.Now < ForgotDate.AddMinutes(3))

在我的数据库中,时间就是这样 - 20/7/2012 7:42:19 PM

编辑

IFormatProvider theCultureInfo = new System.Globalization.CultureInfo("en-GB", true);
DateTime ForgotDate = DateTime.ParseExact(ForgotDatelbl.ToString(), "dd/M/yyyy hh:mm:ss tt", theCultureInfo);

然而,错误仍然存​​在..

3 个答案:

答案 0 :(得分:1)

尝试仅使用1h说明符更改格式:

//20/7/2012 7:42:19 PM
"dd/M/yyyy h:mm:ss tt",

答案 1 :(得分:0)

在重载方法

中使用Culture

答案 2 :(得分:0)

请考虑以下

string dateString = "20/7/2012 7:42:19 PM";

//can be this in your case: string dateLabel = ForgotDatelbl.Text;

var culture = new CultureInfo("en-GB");
var date = DateTime.Parse(dateString, culture, DateTimeStyles.RoundtripKind);

这解析了你想要的完全匹配。