5

我通过解析 XElement 从 xml 中检索日期和时间字符串。日期和时间值分别由 file.Element("Date").Value和检索file.Element("Time").Value

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

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

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

datepicker.Value = dt;

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

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'

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

string total = file.Element("Date").Value + " " + b + c;

现在的值total是 '12/29/2012 9:55:00 AM'

然后我尝试将此total字符串解析为日期时间,但它会引发格式异常

DateTime.Parse(total, CultureInfo.InvariantCulture);

任何帮助表示赞赏...

4

3 回答 3

8

尝试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);

演示在这里

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

请注意,我在小时部分添加了额外的 0。必须为 2 位,否则会出现格式异常。

于 2012-12-29T07:36:11.643 回答
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);
于 2012-12-29T07:33:44.170 回答
0

我已经得到了解决方案。当试图以 XML 格式保存 datepicker 时,我将 timepicker 的值保存为 XMLElement 作为 ValueString,因此当转换为字符串时总是抛出错误。所以我将它以 XML 格式保存为 Value.ToString()。现在它可以正确地从字符串转换为日期或时间等价物。

于 2013-04-23T07:28:09.493 回答