从文本文件中读取字符串并将其用作TimeSpan

问题描述:

我有一个包含两行的文本文件。它们都包含这种格式的小时数。从文本文件中读取字符串并将其用作TimeSpan

14,0,0

15,0,0

我读的C#这个文本文件,并获得两行分为两个不同的字符串:

  if (File.Exists(txtFile)) 
      { 
       string[] lines = File.ReadAllLines(txtFile); 
       startHour = lines[0]; 
       endHour = lines[1]; 
      } 

所以startHour = 14,0,0和endHour = 15,0,0

  TimeSpan start = new TimeSpan(14, 0, 0); 
      TimeSpan end = new TimeSpan(15, 0, 0); 
      TimeSpan now = DateTime.Now.TimeOfDay; 


      if (now <= end && now >= start) 
      { 
       Console.WriteLine("between the hour"); 
      } 
      else 
      { 
       Console.WriteLine("dont match"); 
      } 

我试图做到的是从开始的价值观从文本文件来代替硬编码的时间和结束时间跨度

  TimeSpan start = new TimeSpan(14, 0, 0); 
      TimeSpan end = new TimeSpan(15, 0, 0); 

当我尝试这样做:

TimeSpan start = new TimeSpan(startHour); 

我得到一个错误:

cannot convert from 'System.TimeSpan' to 'long'

我试图用TimeSpan.Parse(startHour),但它不工作。

有什么建议吗?沿线的

东西:

var startLine = lines[0].Split(','); 
var endLine = lines[1].Split(','); 

var startHour = int.Parse(startLine[0]); 
var startMin = int.Parse(startLine[1]); 
var startSec = int.Parse(startLine[2]); 

var endHour = int.Parse(endLine[0]); 
var endMin = int.Parse(endLine[1]); 
var endSec = int.Parse(endLine[2]); 

TimeSpan start = new TimeSpan(startHour, startMin , startSec); 
TimeSpan end = new TimeSpan(endHour, endMin, endSec); 
+0

完美!谢谢。 – smr5

时间跨度已经得到了4重载方法和他们没有指出,如果你传递一个字符串给它Consructor,它将解析和屈服你时间跨度Object.So的错误是因为

startHour = lines[0]; 

被映射到TimeSpan的long构造函数。

,并解决这一点,你必须使用类似这样

var SplitTime = lines[0].Split(','); 

TimeSpan sample = new TimeSpan(SplitTime[0], SplitTime[1], SplitTime[2]); 

TimeSpan.ParseExact可以处理这个问题:

TimeSpan.ParseExact(lines[0], "h','m','s", CultureInfo.CurrentCulture) 

你可以尝试使用TimeSpan.ParseExact方法。