这里会显示出您选择的修订版和当前版本之间的差别。
— |
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来转换时区]] |