用户工具

站点工具


modules:pytz

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

modules:pytz [2011/03/16 06:08] (当前版本)
行 1: 行 1:
 +====== Python时区设置与pytz的应用 ======
  
 +===== 时区的概念与转换 =====
 +首先要知道时区之间的转换关系,其实这很简单:把当地时间减去当地时区,剩下的就是格林威治时间了。
 +例如北京时间的18:​00就是18:​00+08:​00,相减以后就是10:​00+00:​00,因此就是格林威治时间的10:​00。
 +
 +而把格林威治时间加上当地时区,就能得到当地时间了。
 +例如格林威治时间的10:​00是10:​00+00:​00,转换成太平洋标准时间就是加上-8小时,因此是02:​00-08:​00。
 +
 +而太平洋标准时间转换成北京时间转换也一样,时区相减即可。
 +例如太平洋标准时间的02:​00-08:​00,与北京时间相差-16小时,因此结果是18:​00+08:​00。
 +
 +===== Python时区的处理 =====
 +发现python没有简单的处理时区的方法,不明白为什么Python不提供一个时区模块来处理时区问题。
 +好在我们有个第三方pytz模块,能够帮我们解决一下时区问题。
 +
 +===== pytz简单教程 =====
 +==== pytz查询某个的时区 ====
 +可以根据国家代码查找这个国家的所有时区。
 +<​code>​
 +>>>​ import pytz
 +>>>​ pytz.country_timezones('​cn'​)
 +['​Asia/​Shanghai',​ '​Asia/​Harbin',​ '​Asia/​Chongqing',​ '​Asia/​Urumqi',​ '​Asia/​Kashgar'​]
 +</​code>​
 +
 +==== pytz创建时区对象 ====
 +
 +根据上面得到的时区信息,就可以创建指定的时区对象。比如创建上海时区对象:
 +<​code>​
 +tz = pytz.timezone('​Asia/​Shanghai'​)
 +</​code>​
 +==== 得到某个时区的时间 ====
 +
 +然后在创建时间对象时进行指定上面时区,就可以得到指定时区的日期时间:
 +
 +<​code>​
 +>>>​ import datetime
 +>>>​ datetime.datetime.now(tz)
 +datetime.datetime(2009,​ 2, 21, 15, 12, 33, 906000, tzinfo=<​DstTzInfo '​Asia/​Shanghai'​ CST+8:00:00 STD>)
 +</​code>​
 +
 +===== 参考 =====
 +  * limudou关于pytz的一些记录 [[http://​hi.baidu.com/​limodou/​blog/​item/​1e8ad507440417ca7a8947c3.html|1]] [[http://​hi.baidu.com/​limodou/​blog/​item/​987ea8ec3dfa902063d09ff7.html|2]]
 +
 +  * [[http://​www.keakon.net/​2010/​12/​14/​%E7%94%A8datetime%E5%92%8Cpytz%E6%9D%A5%E8%BD%AC%E6%8D%A2%E6%97%B6%E5%8C%BA|用datetime和pytz来转换时区]]
modules/pytz.txt · 最后更改: 2011/03/16 06:08 (外部编辑)