首页 文章

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

提问于
浏览
-2

我有一个包含两行的文本文件 . 它们都包含这种格式的小时数 .

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的硬编码小时

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

当我尝试这个:

TimeSpan start = new TimeSpan(startHour);

我收到一个错误:

无法从'System.TimeSpan'转换为'long'

我试图使用TimeSpan.Parse(startHour),但它不起作用 .

有什么建议?

4 回答

  • 1

    有点像:

    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);
    
  • -1

    TimeSpan有4个重载方法,其中没有一个表示如果你将一个String传递给它的构造函数,它将解析并产生你的时间 Span 对象 . 所以错误是因为

    startHour = lines[0];
    

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

    要解决这个问题,你必须使用这样的东西

    var SplitTime = lines[0].Split(',');
    
    TimeSpan sample = new TimeSpan(SplitTime[0], SplitTime[1], SplitTime[2]);
    
  • 1

    TimeSpan.ParseExact可以处理这个:

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

    您可以尝试使用 TimeSpan.ParseExact 方法 .

相关问题