Manejo de sellos de fecha y hora hasta la medianocheHola a todos,
Estoy trabajando con datos de un experimento en el que se ha cambiado la luz y el día en un entorno controlado.
En este caso, durante un cierto período de tiempo, la luz se enciende a las 10 p.m. y se apaga a las 10 a.m. todos los días. Para cada valor de DateTime (cada 5 min) en este experimento, he creado una columna donde necesito caracterizar si es claro u oscuro.
He creado un script:
If( :LightsOnDate < :DateTime <= :LightsOffDate,
"Light phase",
"Dark phase"
)
Cuando los datos en DateTime pasan de las 10 pm, se ponen correctamente en el valor "fase clara", sin embargo, cuando pasan de la medianoche, vuelven a cambiar a "fase oscura".
¿Por qué está haciendo eso y cómo puedo solucionarlo?
Br Julie
Tabla de datosScriptingRe: Manejo de marcas de fecha y hora hasta la medianocheSu fórmula parece funcionar correctamente. ¿Es muy probable que LightOnDate en las últimas tres filas sea incorrecto ya que la luz se encendió el día anterior?
Re: Manejo de marcas de fecha y hora hasta la medianocheDado que sus horarios de encendido y apagado son estáticos, creo que la fórmula debería ser
If( Hour( :DateTime - In Hours( 10 ) ) < 12,
"Dark phase",
"Light phase"
)
Uno necesita lidiar con la hora del día, y restar las 10 horas obliga a los días a alinearse
Re: Manejo de marcas de fecha y hora hasta la medianocheHola @JulieSAppel ,
Como @txnelson menciona, tienes que lidiar con el problema de la hora del día. Lo hice funcionar con el siguiente cambio en la fórmula de su columna. Elegí el 22 porque las luces siempre se encienden a las 22:00 horas. Sin embargo, hay otras formas de hacerlo.
If(
:LightOnDate < :DateTime <= :LightOffDate |
Date Difference( :DateTime, :LightOnDate, "Hour" ) == 22,
"Light Pahse",
"Dark Phase"
)
Re: Manejo de marcas de fecha y hora hasta la medianocheCreo que solo necesita el valor: DateTime ya que la luz encendida y apagada es siempre la misma. Similar a @txnelson . Si es así, esta expresión es más simple.
t1 = Modulo( :DateTime, In Days( 1 ) );
If( In Hours( 10 ) < t1 <= In Hours( 22 ),
"Dark",
"Light"
);
Re: Manejo de marcas de fecha y hora hasta la medianocheA continuación se explica lo que está mal. Cada fila de su tabla de datos cae en una de las dos situaciones.
1) DateTime está en el lado izquierdo del intervalo definido por OnDate y OffDate
2) DateTime está entre OnDate y OffDate.
La segunda situación siempre da la respuesta esperada. La primera situación fallará casi la mitad de las veces.

Re: Manejo de marcas de fecha y hora hasta la medianocheGracias por todas sus respuestas. Veo el problema con la medianoche, pero pensé que como DateTime es básicamente un valor numérico que debe evaluarse si está en un rango o no, no sería un problema, pero supongo que estaba equivocado.
Veo las diferentes soluciones funcionando para estos datos específicos, pero estoy buscando una solución genérica (probablemente debería haber mencionado eso) que se ajuste a diferentes conjuntos de datos donde LightsOn y LigthsOff son diferentes de lo que son aquí.
Entonces, para otros conjuntos de datos, LightsOn podría ser a las 7 a.m. y LightsOff a las 9 p.m., lo que significa que los diferentes períodos también pueden variar en duración.
¿Hay alguna forma de evitar esto?
Br Julie
Re: Manejo de sellos de fecha y hora hasta la medianoche@JulieSAppel , Creo que tiene razón en que puede hacer la comparación de los valores de fecha. estoy de acuerdo con @jthi La respuesta es que la fórmula que tiene es correcta pero que el valor de LightOnDate podría no serlo.