计算上午9:00至下午6:00之间的时间

时间:2009-04-27 12:25:44

标签: c#

我上午8点有一个字符串。假设我想检查上午8:00到上午9:00到下午6:00之间的时间 如何检查这个或者上午11:00到时间是在上午9:00到下午6:00之间? 如何在c#中找到它?

8 个答案:

答案 0 :(得分:7)

您可以使用DateTime对象,其静态解析方法和比较运算符。 如下所示:

newTime = DateTime.Parse("8:00 AM");
fixedTime = DateTime.Parse("11:00 AM");
if (newTime < fixedTime)
{
// do something
}

如果需要,您可以从另一个DateTime中减去一个DateTime来获取TimeSpan - 这是一个持续时间。

答案 1 :(得分:2)

String s = "8:00 AM";
DateTime dt = DateTime.Parse(s);

if (dt < DateTime.Parse("9:00 AM"))
{
    Console.WriteLine("Before");
}
else if (dt <= DateTime.Parse("6:00 PM"))
{
    Console.WriteLine("Between");
}
else
{
    Console.WriteLine("After");
}

答案 2 :(得分:1)

一般方法是将时间转换为可用于比较的数字。

因此,上午8:00将是8,6:00 PM将是18,因此18&gt; 8等。

答案 3 :(得分:0)

函数DateTime.Parse()可用于将字符串转换为“DateTime”对象。

您的开始时间是:上午9:00。

你的结束时间是:6:00 PM。

因此你有两者之间的距离:

下午6:00 - 9:00。

这将为您提供TimeSpan对象。

然后你采取'神秘时间',然后做:

X:XX - 9:00 AM。

如果得到的时间跨度> 0和得到的时间跨度是&lt; 6:00 PM-9:00AM tiemspan,你很好。

或者,你可以简单地做

if(myTime&gt; 9:00 AM&amp;&amp; myTime&lt; 6:00 PM)

答案 4 :(得分:0)

DateTime beginDate = DateTime.Today.AddHours(9);
DateTime endDate = DateTime.Today.AddHours(18);

TimeSpan diff = endDate - beginDate;

现在diff包含开始日期和结束日期之间的差异。

答案 5 :(得分:0)

怎么样

int _dateTimeCompare = DateTime.Compare(DateTime1, DateTime2);

然后_dateTimeCompare&lt; 1 = DateTime 1小于DateTime2,0 =它们是相同的,&gt; 0 = DateTime2&gt; DateTime1

然后你可以进行比较。

_date1和_date2之间的一个简单的_myDate将是:

if (DateTime.Compare(_myDate, _date1) >= 0 && DateTime.Compare(_myDate, _date2) <= 0)
{
    // we're between _date1 and _date2
}

有点事:):

答案 6 :(得分:0)

我没有看到将字符串转换为DateTime变量(因为它们应该是)的问题,然后使用Compare方法来执行比较。

此外,DateTime结构实现了><>=<=等运算符,简化了比较。

答案 7 :(得分:0)

您可以尝试使用TimeSpan.Parse或TimeSpan.TeyParse将字符串解析为TimeSpan对象。

如果解析成功,您将拥有一个TimeSpan对象,可以使用标准比较运算符与其他时间跨度对象进行比较。您还可以执行加法和减法等操作来计算两个时间间隔之间的时间,或者根据时间和持续时间计算新时间。

Timespan是一个非常好的小班,请不要重新发明轮子。

更新

正如Cerebrus在评论中所评论的那样,TimeSpan在某种意义上说它既可以代表时间点也可以代表持续时间。 (DateTime.TimeOfDay属性是Timespan,即使它是一个时间点)。 使用默认日期部分创建DateTime对象可能是一个更好的主意,并将其用作计算的基础。代码的意图将更清晰。 日期时间也可以使用比较,添加和减法等操作,并在适用的情况下生成DateTimes或TimeSpan。