我尝试将我的字符串解析为datetime,但是我得到了一个FormatException。
string date = "27.02.2017 13:03:16 Uhr";
action.Date =
DateTime.ParseExact(date, "dd.MM.yyyy HH:mm:ss",CultureInfo.InvariantCulture);
有人有什么想法吗?
答案 0 :(得分:5)
你必须逃避Uhr
后缀:
string date = "27.02.2017 13:03:16 Uhr";
action.Date = DateTime.ParseExact(date, "dd.MM.yyyy HH:mm:ss 'Uhr'",
CultureInfo.InvariantCulture);
答案 1 :(得分:1)
问题是" Uhr"在输入结束时。如果您指定这样的格式,则输入必须与格式匹配。
在一些人添加" Uhr"有些人不赞成,我建议使用正则表达式提取相关部分。
using System.Text.RegularExpressions;
Match m = Regex.Match( @"/([\d]{2}\.[\d]{2}\.[\d]{4} +[\d]{2}\:[\d]{2}\:[\d]{2})/", date);
if (m != null)
date = m.Groups[0].Value;
else
// Something wrong with the input here
然后(除非m为null)在大多数情况下,您可以将此字符串用作ParseExact-part的有效输入。但请注意,正则表达式不执行任何范围检查,因此像Montag, 99.99.9999 99:99:99 Uhr
这样的输入将导致与正则表达式匹配的日期字符串99.99.9999 99:99:99
,但无论如何都不是有效的DateTime。