解析精确格式无效

本文关键字:格式 无效 | 更新日期: 2023-09-27 18:10:02

我需要解析字符串并将其转换为DateTime。我有以下代码片段:

using (StreamReader reader = new StreamReader(fichier))
{
    while ((item = reader.ReadLine()) != null)
    {
        string[] table = item.Split(''t');
        string _date = table[2];
        pointages.Add(DateTime.ParseExact(_date,"yyyy-MM-dd-hh:mm:ss", CultureInfo.InvariantCulture,DateTimeStyles.None));
    } 
}

Edit2

文件的内容:

917          2014-06-24-07:43:47     Finger

字符串_date =2014-06-24-07:43:47。当我执行程序时,我得到了这个异常:String was not recognized as a valid DateTime.

编辑

当我像这样添加一行时:

  while ((item = reader.ReadLine()) != null)
                {
                    string[] table = item.Split(''t');
                    string _date = table[2];
                    _date ="2014-06-24-07:43:47";
                    pointages.Add(DateTime.ParseExact(_date,"yyyy-MM-dd-hh:mm:ss", CultureInfo.InvariantCulture,DateTimeStyles.None));
                } 

它! !

  • 这个错误的原因是什么?
  • 我该如何修复它?

解析精确格式无效

您的示例字符串为我工作,所以它必须是一个不同的字符串。使用调试器。也许它实际上是像17:43:47一样使用24小时时钟,那么你需要HH而不是hh

你:不,这真的是我贴出来的字符串。

这是不可能的。也许它有前后空格,先用Trim:

_date = _date.Trim();

Trim不仅删除空格,而且删除属于SpaceSeparatorLineSeparatorParagraphSeparator类别的所有字符。所以可能是账单什么的。请看String.Trim使用的Char.IsWhiteSpace的注释部分。

旁注:如果你不知道格式是否有效,你可以使用DateTime.TryParseExact代替,它不会引发异常,但如果字符串无法解析为DateTime,则返回false:

bool couldBeParsed = DateTime.TryParseExact(
    _date.Trim(), 
    "yyyy-MM-dd-HH:mm:ss", 
    CultureInfo.InvariantCulture, 
    DateTimeStyles.None,
    out dt);