比较用户的开始时间输入并将其与现在的时间进行比较

时间:2017-06-23 12:32:14

标签: c# datetime

我的clas中有一个属性:

public string Starttime

这是来自客户端的输入值。现在我希望将此值与计算机的时间进行比较。

伪代码:

if(inputvalue startime = time on the computer){
     //do something
}
else{

thread.sleep(100)

}

时间的语法不能是Datetime,而只能是13:00,13:00,14:57等时间。

哪种数据类型最适合实现此要求?

3 个答案:

答案 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();
}

<强>输出

enter image description here