Joh*_*n M 131 c# datetime timespan
使用.NET 3.5
我想确定当前时间是否落在时间范围内.
到目前为止,我有目前的情况:
DateTime currentTime = new DateTime();
currentTime.TimeOfDay;
Run Code Online (Sandbox Code Playgroud)
我正在搞清楚如何获得转换和比较的时间范围.这会有用吗?
if (Convert.ToDateTime("11:59") <= currentTime.TimeOfDay
&& Convert.ToDateTime("13:01") >= currentTime.TimeOfDay)
{
//match found
}
Run Code Online (Sandbox Code Playgroud)
更新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
}
Run Code Online (Sandbox Code Playgroud)
对于绝对时间使用:
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
}
Run Code Online (Sandbox Code Playgroud)
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
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,在此示例中,时间边界是包含的,并且这仍假设在start和之间的差异小于24小时stop.
JDu*_*ley 17
if (new TimeSpan(11,59,0) <= currentTime.TimeOfDay && new TimeSpan(13,01,0) >= currentTime.TimeOfDay)
{
//match found
}
Run Code Online (Sandbox Code Playgroud)
如果你真的想要将字符串解析为TimeSpan,那么你可以使用:
TimeSpan start = TimeSpan.Parse("11:59");
TimeSpan end = TimeSpan.Parse("13:01");
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
该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
}
Run Code Online (Sandbox Code Playgroud)
此外,new DateTime()是相同的,DateTime.MinValue并且将始终等于1/1/0001 12:00:00 AM.(值类型不能具有非空的默认值)您想要使用DateTime.Now.
| 归档时间: |
|
| 查看次数: |
142057 次 |
| 最近记录: |