0

我有一个带有 .txt 文件的服务器。该程序将页面保存到文本文件中,然后使用 count 每行处理它。然后我需要将其添加到日期时间,然后将其添加到列表中。

到目前为止,除了最后一部分日期时间和列表之外,它还不错。我总是得到格式异常。我尝试了一些尝试解析和解析的变体,但没有运气。

时间在这样的列表中:

 06:06 AM
 06:07
 12:12 
 12:50 

每行一个

消息框一次显示每个结果,没有错误和正确的信息。

while ((line = file.ReadLine()) != null)
{

  //  MessageBox.Show(line);
      List<DateTime> Busarrivetime = new List<DateTime>();
  //  DateTime tryme = DateTime.Parse(line, CultureInfo.InvariantCulture);
  //  MessageBox.Show(tryme.ToString());
      DateTime date;
      Busarrivetime.Add(date = DateTime.ParseExact(line,"hh:mm tt", System.Globalization.CultureInfo.InvariantCulture)); // ERRORS ON THIS LINE

      count++;
}

file.Close();

Console.ReadLine();

确切的错误:

mscorlib.dll 中出现“System.FormatException”类型的未处理异常

这是我正在使用的列表

4

3 回答 3

1

您的时间格式并不一致。例如06:06 AM,有 am/pm 指示符,而 as12:12没有。

所以考虑使用多种可能的格式。

DateTime.ParseExact(item, new[] { "hh:mm tt", "HH:mm" }, System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.None);

这应该工作

于 2013-09-14T15:30:36.843 回答
0

它是一个简单的解决方案

我用这个测试过DateTime.ParseExact("06:06 AM ", "hh:mm tt", System.Globalization.CultureInfo.InvariantCulture);

并得到了和你一样的例外。

但用这个测试

DateTime.ParseExact("06:06 AM", "hh:mm tt", System.Globalization.CultureInfo.InvariantCulture);

没有得到。文件正在拾取尾随或前导空格。

使用 .Trim() 函数 :) 删除它们然后测试

DateTime.ParseExact(("06:06 AM ").Trim(), "hh:mm tt", System.Globalization.CultureInfo.InvariantCulture);
于 2013-09-14T15:59:51.823 回答
0

难道只是文件末尾有一个额外的空行吗?

// add this just inside your while loop
if (String.IsNullOrWhiteSpace(line))
    continue;

此外,您需要在 while 循环之前声明您的列表,否则您只会为每一行获取一个新列表,而不是添加到一个大列表中。

于 2013-09-14T17:43:18.400 回答