如何从时间戳计算星期几? (DST)

时间:2012-01-05 16:56:54

标签: math language-agnostic timestamp

我正在为日期时间库不可用的设备开发代码(注意:浮点数也不可用),所以我必须做数学myslef。

我的时间戳是2000年1月1日(以UTC为单位)的秒数。 在配置设备我有:

  • 当前时区的小时数+/-来自UTC
  • dst作为添加小时数

我需要知道:

  • 当前的一周
  • 当前时间

计算当前时间非常简单:

timestamp % 86400 # seconds from midnight

计算星期几(1-monday,7-sunday):

dayofweek = (timestamp - 86400) % (86400*7) / 86400
if dayofweek = 0:
    dayofweek = 7

注释:

  • 86400 =一天内的秒数

但在计算之前,我应该: 1.添加时区小时 2.添加DST小时

问题是如何计算是否应该添加DST小时(仅适用于欧洲夏令时)?我需要有效地做到这一点,因为我的计算能力非常有限,我需要尽快做到这一点: - )

1 个答案:

答案 0 :(得分:0)

要确定是否已应用DST,您还需要知道日期和月份。在欧洲,这个变化是在3月的上周末/ 10月的最后一个周末。建议您在没有DST的情况下应用时区偏移,进行计算以获得小时,星期几,日和月,然后如果您使用DST,则可能需要调整任何或所有这些值(取决于原始值小时,可能只是需要调整的小时。)

通过首先执行时区偏移,您可以在没有DST的情况下获得当地小时/天的星期/日值,然后DST调整是微不足道的。