我的clas中有一个属性:
public string Starttime
这是来自客户端的输入值。现在我希望将此值与计算机的时间进行比较。
伪代码:
if(inputvalue startime = time on the computer){
//do something
}
else{
thread.sleep(100)
}
时间的语法不能是Datetime
,而只能是13:00,13:00,14:57等时间。
哪种数据类型最适合实现此要求?
答案 0 :(得分:2)
您可以考虑使用TimeSpan
来保持小时和分钟,并且您会感觉良好。
或者,您可以获取整个日期,只比较TimeOfDay
属性:
var endTime = DateTime.Now;
if(startTime.Hour == endTime.Hour && startTime.Minute == startTime.Minute)
{
// Do what you do when they are equal...
}
else
{
// They are not equal. Which is more likely.
}
另外,我建议使用DateTime
对象而不是字符串。
<强>更新强>
如果你有宽容,另一种迎合细微差别的方法如下:
var endTime = DateTime.Now; // Here I am assuming a tolerance of 2 seconds.
if(endTime.Subtract(startTime).Seconds <= 2)
{
// Basically the same.
}
else
{
// Different as far as we are concerned.
}
答案 1 :(得分:0)
您可以使用TimeSpan作为数据类型。以下是MSDN参考,其中包含您应该有权访问的所有方法和属性:
https://msdn.microsoft.com/en-us/library/system.timespan(v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/system.timespan(v=vs.90).aspx
希望这可以帮助你。
答案 2 :(得分:0)
您可以使用TimeSpan
类型来表示小时和分钟。它有一个Parse
方法,它将获取您的输入字符串并将其转换为TimeSpan
。然后,您可以使用DateTime.Now.TimeOfDay
:
static void Main(string[] args)
{
var clientInput = "14:57";
var startTime = TimeSpan.Parse(clientInput);
var currentTime = DateTime.Now.TimeOfDay;
Console.WriteLine("The start time is: {0}", startTime.ToString("hh\\:mm"));
Console.WriteLine("The current time is: {0}", currentTime.ToString("hh\\:mm"));
var difference = currentTime.Subtract(startTime);
if ((int)difference.TotalMinutes == 0)
{
Console.WriteLine("It's time to start!");
}
else if ((int)difference.TotalMinutes > 0)
{
Console.WriteLine("We should have started {0} minutes ago!",
(int)difference.TotalMinutes);
}
else
{
Console.WriteLine("We will start in: {0} hours and {1} minutes.",
-difference.Hours, -difference.Minutes);
}
Console.Write("\nDone!\nPress any key to exit...");
Console.ReadKey();
}
<强>输出强>