C# 从文本文件中读取字符串并将其用作时间跨度

C# 从文本文件中读取字符串并将其用作时间跨度,c#,.net,C#,.net,我有一个包含两行的文本文件。它们都包含此格式的小时数 14,0,0 15,0,0 我正在用C#读取这个文本文件,并将这两行转换成两个不同的字符串: if (File.Exists(txtFile)) { string[] lines = File.ReadAllLines(txtFile); startHour = lines[0]; endHour = li

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

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(startHour);
我得到一个错误:

无法从“System.TimeSpan”转换为“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);

TimeSpan有4个重载方法,其中没有一个表示如果您将字符串传递给其构造函数,它将解析并生成Time Span对象

startHour = lines[0];
映射到TimeSpan的长构造函数

要解决这个问题,你必须使用这样的方法

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

TimeSpan sample = new TimeSpan(SplitTime[0], SplitTime[1], SplitTime[2]);
您可以处理此问题:

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

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

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