.NET 3.5 사용
현재 시간이 시간 범위에 속하는지 확인하고 싶습니다.
지금까지 나는 currentime을 가지고있다 :
DateTime currentTime = new DateTime();
currentTime.TimeOfDay;
시간 범위를 변환하고 비교하는 방법을 비우고 있습니다. 이게 효과가 있을까요?
if (Convert.ToDateTime("11:59") <= currentTime.TimeOfDay
&& Convert.ToDateTime("13:01") >= currentTime.TimeOfDay)
{
//match found
}
UPDATE1 : 제안 해 주셔서 감사합니다. TimeSpan 함수에 익숙하지 않았습니다.
답변
하루 중 시간을 확인하려면 다음을 사용하십시오.
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
}
답변
여기에 좋은 답변이 있지만 시작 시간이 종료 시간과 다른 날인 경우에는 해당되지 않습니다. 하루 경계를 넘어야하는 경우 다음과 같이 도움이 될 수 있습니다.
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
}
}
이 예에서 시간의 경계가 포함되어 있는지, 그리고이 여전히 사이에 24 시간 차이보다 적은 가정합니다 start
및 stop
.
답변
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");
답변
이것에 대한 간단한 작은 확장 기능 :
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;
}
답변
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
.) 을 사용하려고합니다 .
답변
매우 가깝습니다. 문제는 DateTime을 TimeOfDay와 비교하는 것입니다. 해야 할 일은 Convert.ToDateTime () 함수의 끝에 .TimeOfDay 속성을 추가하는 것입니다.