DateTime.Parse投掷格式异常(DateTime.Parse throwing forma

2019-07-17 16:19发布

我通过解析的XElement检索XML日期和时间字符串。 的日期和时间值由检索file.Element("Date").Valuefile.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;

我也有一个timepicker其值必须从XML检索的时间值进行设置。 要设置timepicker值我这样做。 声明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 /二千○十二分之二十九上午09时55分○○秒”

然后我尝试解析这个total字符串为DateTime,但它抛出一个出现FormatException

DateTime.Parse(total, CultureInfo.InvariantCulture);

任何帮助表示赞赏...

Answer 1:

尝试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#日期时间格式的格式字符串的细节。

请注意 ,我添加了一些额外的0小时部分。 它必须是2个位数否则会出现格式异常。



Answer 2:

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


Answer 3:

我有这种情况的解决方案。 当试图以XML格式保存的日期选择器,我是节约timepicker为的XMLElement为的valueString,因此,当转换成字符串总是扔误差值。 所以,我在XML格式保存为Value.ToString()。 现在,它可以从正确的字符串转换为日期或时间的等价物。



文章来源: DateTime.Parse throwing format exception