Posted on

GENESIS64 SCADA : Expression เวลาแรกของวัน

Q: ถ้าต้องการให้ได้เวลาแรกของวันที่เป็นอินพุตจะทำอย่างไร

A : สามารถใช้ Expression bday(วันเวลาอินพุต)ได้

เช่น bday({{:ServerLocalTime}}) ก็จะได้เวลาแรกของวันปัจจุบัน

bday({{:ServerLocalTime}}) 

เวลาอินพุตจะเป็นวันที่เวลาใดก็ได้ จะมาจากOPC หรือFunctionก็ได้ จะได้วันเดิมที่เวลาแรกสุดออกมาเสมอคือ 12:00:00AM (เวลาศูนย์นาฬิกา)

จะเห็นว่าไม่ว่าวันเวลาอินพุตจะมีเวลาเท่าใดก็ตามเมื่อใช้bday()ก็จะได้เวลาออกมาเป็นเวลาแรกของวันเสมอ ทำให้เราสามารถนำไปใช้ประโยชน์หลายอย่าง เช่นใช้เป็นค่าอ้างอิงในการเปรียบเทียบวันเวลาโดยเอาเวลาปัจจุบันมาเป็นอินพุต และสามารถบวกเวลาเข้าไปให้ได้เวลาที่ต้องการ เช่นหากต้องการเวลา 8:00:00 น. ก็บวกtimespanเข้าไป8ชม. ดังโค้ดด้านล่าง

bday({{:ServerLocalTime}}) + totimespan("8:00")

ก็จะได้ผลลัพวธ์คือวันที่ปัจจุบันที่เวลา8.00น.

ถ้าเราต้องการเมื่อวานที่เวลา 8.00 น. ก็ใช้โค้ด adddays เพื่อบวกหรือลบจำนวนวันจากวันเวลาอินพุต ในกรณีนี้ลบวันไป 1 วัน แล้วหาค่าเวลาแรกของวัน ก่อนที่จะบวกเวลาเพิ่มไป 8 ชม. เพื่อให้ได้เมื่อวานที่เวลา 8.00 น.

adddays(bday({{:ServerLocalTime}}),-1) 
+ totimespan("8:00")