Joh*_*n M 131 c# datetime timespan
使用.NET 3.5
我想确定当前时间是否落在时间范围内.
到目前为止,我有目前的情况:
DateTime currentTime = new DateTime();
currentTime.TimeOfDay;
我正在搞清楚如何获得转换和比较的时间范围.这会有用吗?
if (Convert.ToDateTime("11:59") <= currentTime.TimeOfDay 
    && Convert.ToDateTime("13:01") >= currentTime.TimeOfDay)
{
   //match found
}
更新1:感谢大家的建议.我不熟悉TimeSpan功能.
Fra*_*ack 236
检查一天中的使用时间:
TimeSpan start = new TimeSpan(10, 0, 0); //10 o'clock
TimeSpan end = new TimeSpan(12, 0, 0); //12 o'clock
TimeSpan now = DateTime.Now.TimeOfDay;
if ((now > start) && (now < end))
{
   //match found
}
对于绝对时间使用:
DateTime start = new DateTime(2009, 12, 9, 10, 0, 0)); //10 o'clock
DateTime end = new DateTime(2009, 12, 10, 12, 0, 0)); //12 o'clock
DateTime now = DateTime.Now;
if ((now > start) && (now < end))
{
   //match found
}
Nic*_*ick 105
这里有一些很好的答案,但没有一个涵盖你的开始时间与你的结束时间不同的一天.如果你需要跨越日界,那么这样的事情可能会有所帮助:
TimeSpan start = TimeSpan.Parse("22:00"); // 10 PM
TimeSpan end = TimeSpan.Parse("02:00");   // 2 AM
TimeSpan now = DateTime.Now.TimeOfDay;
if (start <= end)
{
    // start and stop times are in the same day
    if (now >= start && now <= end)
    {
        // current time is between start and stop
    }
}
else
{
    // start and stop times are in different days
    if (now >= start || now <= end)
    {
       // current time is between start and stop
    }
}
请注意,在此示例中,时间边界是包含的,并且这仍假设在start和之间的差异小于24小时stop.
JDu*_*ley 17
if (new TimeSpan(11,59,0) <= currentTime.TimeOfDay && new TimeSpan(13,01,0) >=  currentTime.TimeOfDay)
{
   //match found
}
如果你真的想要将字符串解析为TimeSpan,那么你可以使用:
    TimeSpan start = TimeSpan.Parse("11:59");
    TimeSpan end = TimeSpan.Parse("13:01");
And*_*ock 15
一个简单的小扩展功能:
public static bool IsBetween(this DateTime now, TimeSpan start, TimeSpan end)
{
    var time = now.TimeOfDay;
    // If the start time and the end time is in the same day.
    if (start <= end)
        return time >= start && time <= end;
    // The start time and end time is on different days.
    return time >= start || time <= end;
}
ste*_*sha 13
尝试在C#中使用TimeRange对象来完成目标.
TimeRange timeRange = new TimeRange();
timeRange = TimeRange.Parse("13:00-14:00");
bool IsNowInTheRange = timeRange.IsIn(DateTime.Now.TimeOfDay);
Console.Write(IsNowInTheRange);
该TimeOfDay属性返回一个TimeSpan值.
请尝试以下代码:
TimeSpan time = DateTime.Now.TimeOfDay;
if (time > new TimeSpan(11, 59, 00)        //Hours, Minutes, Seconds
 && time < new TimeSpan(13, 01, 00)) {
    //match found
}
此外,new DateTime()是相同的,DateTime.MinValue并且将始终等于1/1/0001 12:00:00 AM.(值类型不能具有非空的默认值)您想要使用DateTime.Now.