tiempo raleigh pronostico northeast norte maƱana hoy estado dias clima chicago carolina c# datetime timespan

c# - raleigh - estado del tiempo



Encuentre si el tiempo actual cae en un rango de tiempo (9)

¿Será esto más simple para manejar el caso del límite del día? :)

TimeSpan start = TimeSpan.Parse("22:00"); // 10 PM TimeSpan end = TimeSpan.Parse("02:00"); // 2 AM TimeSpan now = DateTime.Now.TimeOfDay; bool bMatched = now.TimeOfDay >= start.TimeOfDay && now.TimeOfDay < end.TimeOfDay; // Handle the boundary case of switching the day across mid-night if (end < start) bMatched = !bMatched; if(bMatched) { // match found, current time is between start and end } else { // otherwise ... }

Usando .NET 3.5

Quiero determinar si el tiempo actual cae en un rango de tiempo.

Hasta ahora tengo el tiempo actual:

DateTime currentTime = new DateTime(); currentTime.TimeOfDay;

Estoy en blanco sobre cómo hacer que el rango de tiempo se convierta y compare. ¿Esto funcionaría?

if (Convert.ToDateTime("11:59") <= currentTime.TimeOfDay && Convert.ToDateTime("13:01") >= currentTime.TimeOfDay) { //match found }

ACTUALIZACIÓN1: Gracias a todos por sus sugerencias. No estaba familiarizado con la función TimeSpan.


Algunas buenas respuestas aquí, pero ninguna cubre el caso de que su hora de inicio sea en un día diferente al de su hora de finalización. Si necesita rodear el límite del día, algo como esto puede ayudar:

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 } }

Tenga en cuenta que en este ejemplo, los límites de tiempo son inclusivos y que esto supone una diferencia inferior a 24 horas entre el start y el stop .


Estás muy cerca, el problema es que estás comparando un DateTime con un TimeOfDay. Lo que necesita hacer es agregar la propiedad .TimeOfDay al final de sus funciones Convert.ToDateTime ().


Intenta usar el objeto TimeRange en C # para completar tu objetivo.

TimeRange timeRange = new TimeRange(); timeRange = TimeRange.Parse("13:00-14:00"); bool IsNowInTheRange = timeRange.IsIn(DateTime.Now.TimeOfDay); Console.Write(IsNowInTheRange);

Aquí es donde obtuve ese ejemplo de usar TimeRange


La propiedad TimeOfDay devuelve un valor TimeSpan .

Pruebe el siguiente código:

TimeSpan time = DateTime.Now.TimeOfDay; if (time > new TimeSpan(11, 59, 00) //Hours, Minutes, Seconds && time < new TimeSpan(13, 01, 00)) { //match found }

Además, el new DateTime() es el mismo que DateTime.MinValue y siempre será igual a 1/1/0001 12:00:00 AM . (Los tipos de valores no pueden tener valores predeterminados no vacíos). Desea utilizar DateTime.Now .


Para verificar el uso del tiempo del día:

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 }

Para tiempos absolutos usa:

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 }


Una pequeña función de extensión simple para esto:

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; }


Usando Linq podemos simplificar esto por esto

Enumerable.Range(0, (int)(to - from).TotalHours + 1) .Select(i => from.AddHours(i)).Where(date => date.TimeOfDay >= new TimeSpan(8, 0, 0) && date.TimeOfDay <= new TimeSpan(18, 0, 0))


if (new TimeSpan(11,59,0) <= currentTime.TimeOfDay && new TimeSpan(13,01,0) >= currentTime.TimeOfDay) { //match found }

si realmente quieres analizar una cadena en un TimeSpan, puedes usar:

TimeSpan start = TimeSpan.Parse("11:59"); TimeSpan end = TimeSpan.Parse("13:01");