我正在为日期时间库不可用的设备开发代码(注意:浮点数也不可用),所以我必须做数学myslef。
我的时间戳是2000年1月1日(以UTC为单位)的秒数。 在配置设备我有:
我需要知道:
计算当前时间非常简单:
timestamp % 86400 # seconds from midnight
计算星期几(1-monday,7-sunday):
dayofweek = (timestamp - 86400) % (86400*7) / 86400
if dayofweek = 0:
dayofweek = 7
注释:
但在计算之前,我应该: 1.添加时区小时 2.添加DST小时
问题是如何计算是否应该添加DST小时(仅适用于欧洲夏令时)?我需要有效地做到这一点,因为我的计算能力非常有限,我需要尽快做到这一点: - )
答案 0 :(得分:0)
要确定是否已应用DST,您还需要知道日期和月份。在欧洲,这个变化是在3月的上周末/ 10月的最后一个周末。建议您在没有DST的情况下应用时区偏移,进行计算以获得小时,星期几,日和月,然后如果您使用DST,则可能需要调整任何或所有这些值(取决于原始值小时,可能只是需要调整的小时。)
通过首先执行时区偏移,您可以在没有DST的情况下获得当地小时/天的星期/日值,然后DST调整是微不足道的。