整夜處理日期和時間戳大家好,
我正在處理來自一個實驗的數據,該實驗在受控環境中切換了光線和白天。
在這種情況下,在一段時間內,每天晚上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)