DateTime.Parse抛出格式异常

时间:2012-12-29 07:25:27

标签: c# datetime-format formatexception

我通过解析XElement从xml中检索日期和时间字符串。 检索日期和时间值 <{1}}和file.Element("Date").Value

检索Date值后,我将其解析为DateTime变量

file.Element("Time").Value

然后将此dt值设置为xaml UI上的datepicker值

DateTime dt,ts;
dt = file.Element("Date").Value; // the value is say 12/29/2012

我还有一个timepicker,其值必须由从xml检索的Time值设置。 要设置timepicker值,请执行以下操作。 声明3个字符串,例如:

datepicker.Value = dt;

然后我连接日期值和字符串'b'和'c'

string a = file.Element("Time").Value; // the value is say 9:55 AM
string b = file.Element("Time").Value.Substring(0, 5) + ":00"; // eg 9:55:00
string c = file.Element("Time").Value.Substring(5); // the value is ' AM'

string total = file.Element("Date").Value + " " + b + c; 的价值现在是'12 / 29/2012 9:55:00 AM'

然后我尝试将此total字符串解析为DateTime,但它会抛出一个形式感知

total

任何帮助表示赞赏...

3 个答案:

答案 0 :(得分:7)

尝试DateTime.ParseExact

var dateStr = "12/29/2012 09:55:00 AM";
DateTime date = DateTime.ParseExact(dateStr,"MM/dd/yyyy hh:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture);

演示here

阅读C# DateTime Format了解格式字符串详细信息。

注意我已经在小时部分添加了额外的0。它必须是2位数,否则将发生格式异常。

答案 1 :(得分:0)

尝试使用:DateTime.ParseExact

string total = '12/29/2012 9:55:00 AM'; 
string format = "MM/dd/yyyy H:mm:ss tt";
DateTime dateTime = DateTime.ParseExact(dateString, format,
        CultureInfo.InvariantCulture);

答案 2 :(得分:0)

我有解决方案。 当我尝试以XML格式保存日期选择器时,我将timepicker的值保存为XMLElement作为ValueString,因此当转换为字符串时总是抛出错误。 所以我把它以XML格式保存为Value.ToString()。 现在它可以正确地从String转换为Date或Time等效。