C#日期时间到列表框

时间:2013-09-14 15:17:18

标签: c# string windows-phone-7 datetime

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

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

时间列在这样的列表中:

 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”类型异常

Here is the list I am working with

3 个答案:

答案 0 :(得分:1)

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

因此,请考虑使用多种可能的格式。

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

这应该有效

答案 1 :(得分: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);

答案 2 :(得分:0)

可能只是文件末尾有一个额外的空行?

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

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