整夜处理日期和时间戳大家好,
我正在处理来自一个实验的数据,该实验在受控环境中切换了光线和白天。
在这种情况下,在一段时间内,每天晚上10点打开灯,每天晚上10点关闭灯。 对于此实验中的每个DateTime值(每5分钟),我创建了一个列,我需要在列中对其进行亮或暗表征。
我创建了一个脚本:
If( :LightsOnDate < :DateTime <= :LightsOffDate,
"Light phase",
"Dark phase"
)
当DateTime中的数据移动到晚上10点以上时,它会正确设置为“亮相”值,但是当它经过午夜时,它将再次变为“暗相”。
为什么这样做,我该如何解决?
朱莉(Br Julie)
数据表脚本编写回复:整个午夜处理日期和时间戳您的公式似乎正常工作。 由于前一天打开了光,最后三行的LightOnDate很可能不正确?
回复:整个午夜处理日期和时间戳鉴于您的开/关时间是固定的,我认为公式应为
If( Hour( :DateTime - In Hours( 10 ) ) < 12,
"Dark phase",
"Light phase"
)
一个人需要处理一天中的小时,并且减去10小时会迫使这些天变得混乱
回复:整个午夜处理日期和时间戳你好@JulieSAppel ,
作为@txnelson提到,您必须处理一天中的时间问题。 我将其与列公式的以下更改一起使用。 我之所以选择22,是因为灯光总是在22:00时亮起。 但是,还有其他方法可以完成。
If(
:LightOnDate < :DateTime <= :LightOffDate |
Date Difference( :DateTime, :LightOnDate, "Hour" ) == 22,
"Light Pahse",
"Dark Phase"
)
回复:整个午夜处理日期和时间戳我认为您只需要:DateTime值,因为开灯和关灯总是相同的。 相似@txnelson 。 如果是这样,则此表达式更简单。
t1 = Modulo( :DateTime, In Days( 1 ) );
If( In Hours( 10 ) < t1 <= In Hours( 22 ),
"Dark",
"Light"
);
回复:整个午夜处理日期和时间戳以下内容说明了问题所在。 数据表中的每一行都属于两种情况之一。
1)DateTime在由OnDate和OffDate定义的间隔的左侧
2)DateTime在OnDate和OffDate之间。
第二种情况总是给出预期的答案。 第一种情况将有近一半的时间失败。

回复:整个午夜处理日期和时间戳感谢您的所有答复。 我看到了午夜的问题,但我只是认为,由于DateTime基本上只是一个数值,需要评估它是否在范围内,所以这不是问题,但我想我错了。
我看到适用于此特定数据的不同解决方案,但我正在寻找一种通用解决方案(我可能应该提到),该解决方案将适合LightsOn和LigthsOff与此处不同的不同数据集。
因此,对于其他数据集,LightsOn可能在7 AM,LightsOff在9 PM,这意味着不同的时间段长度也可能有所不同。
反正有解决这个问题的方法吗?
朱莉(Br Julie)