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