参考资料:http://www.baike.com/wiki/GMT
还是以python的文档来说明
在python取当前时间可以使用time模块中的time()函数
>>> import time
>>> print time.time()
1356849129.91
>>>
Return the time in seconds since the epoch as a floating point number.
“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)GMT指的是格林尼治时间,参考文档里面详细说明
下面做个实验 当前时间是北京时间14:33
>>> t = time.time()>>> int(t)%(60*60*24) /(60*60)
6
>>>
北京位于东8区,因此 6 + 8 = 14
所以我理解是,计算机仅存储了格林尼治时间(虽然存储的是个增量),然后在根据机器所在的时区,去推定本地时间
(补充计算机的计时依赖主板上的石英震荡器的)
然后,我们看看怎么取得当天 00:00 所对应的秒数
对于东8区的人来说,我们的00:00 ,相当于格林尼治地区前一天的16:00
所以当天任何一个时刻的北京时间,可以表示为
t = (60*60)*24 * N + (60*60)*16 + X
当天发生的秒数,即从00:00起已经经过的时间,单位是秒
因此我可以很容易得到答案,当天 00:00 所对应的秒数为
( t - (60*60)*16 ) / (60*60*24)*(60*60*24) + (60*60)*16
最后提供一个函数,计算各个时区 00:00 所对应的秒数
import time
# beijing +8
def change_time(time_zone):
span = 0
if time_zone > 0:
span = 24 - timezone
else:
span = - timezone
t = int(time.time())
return (t - (60*60)*span)/(60*60*24)*(60*60*24) + (60*60)*span
~