我有一个包含两行的文本文件。它们都包含这种格式的小时数。
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),但它无效。
有什么建议吗?
答案 0 :(得分: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 :(得分:1)
TimeSpan有4个重载方法,其中没有一个表示如果你将一个字符串传递给它的构造函数,它将解析并产生时间跨度对象。所以错误是因为
startHour = lines[0];
映射到TimeSpan的长构造函数。
要解决这个问题,你必须使用类似的东西
var SplitTime = lines[0].Split(',');
TimeSpan sample = new TimeSpan(SplitTime[0], SplitTime[1], SplitTime[2]);
答案 2 :(得分:0)
TimeSpan.ParseExact
可以解决这个问题:
TimeSpan.ParseExact(lines[0], "h','m','s", CultureInfo.CurrentCulture)
答案 3 :(得分:-1)
您可以尝试使用TimeSpan.ParseExact
方法。