聊聊时区,以及计算机中对时间的表示

参考资料:http://www.baike.com/wiki/GMT

还是以python的文档来说明

在python取当前时间可以使用time模块中的time()函数

>>> import time
>>> print time.time()
1356849129.91
>>> 

time.time()
    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 
~                                                                               



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值