ParseExact字符串到DateTime

时间:2017-02-27 12:43:52

标签: c# parsing datetime

我尝试将我的字符串解析为datetime,但是我得到了一个FormatException。

string date = "27.02.2017 13:03:16 Uhr";  
action.Date = 
    DateTime.ParseExact(date, "dd.MM.yyyy HH:mm:ss",CultureInfo.InvariantCulture);

有人有什么想法吗?

2 个答案:

答案 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。