我正在开发一款类似于智能插座/智能插头的产品。 我的问题是关于 mysql 数据库在计划开/关消息方面的设计。我将在不同时区拥有大量这些产品,并且我不确定如何将时间戳存储在数据库中。
我最初的想法是,每条开/关消息都以 UTC 格式存储在数据库中,并让爬虫脚本每分钟遍历数据库以查看设备是否需要打开或关闭。这似乎是最有效地节省服务器资源的方法。但是,它没有考虑夏令时。这意味着,在半年的时间里,这些商店会提前一个小时切换(或晚一点,我不记得了)。
这让我得出结论,我需要在数据库中存储本地时间的每条开/关消息的时间戳,并使用 https://timezonedb.com/ 提供的时区数据库转换为 UTC。每次我每分钟爬行整个数据库时,我都必须转换每个条目并查看是否是发送消息的时间。
我是不是想太多了?有没有更好的方法来处理这个问题?
最好的解决方案是将打开/关闭设备的时间存储在时间戳中。
这很方便,因为时间戳中的时间值现在在世界任何地方都是相同的,并且不依赖于夏令时和冬令时之间的转换。
但是对于用户指示他所在时区的时间很有用,为此,在设置或显示时间时,您需要将时间与时间戳进行转换。
总结:最好在数据库中使用时间戳,但允许用户使用本地时间。