51 lines
1.1 KiB
Python
51 lines
1.1 KiB
Python
#!/usr/bin/env python
|
||
# -*- encoding: utf-8 -*-
|
||
"""
|
||
Topic: 日期时区和本地化
|
||
Desc :
|
||
"""
|
||
from datetime import datetime, timedelta
|
||
from pytz import timezone
|
||
import pytz
|
||
|
||
|
||
def tz_local():
|
||
d = datetime(2012, 12, 21, 9, 30, 0)
|
||
print(d)
|
||
|
||
# Localize the date for Chicago
|
||
central = timezone('US/Central')
|
||
loc_d = central.localize(d)
|
||
print(loc_d)
|
||
|
||
# Convert to Bangalore time
|
||
bang_d = loc_d.astimezone(timezone('Asia/Kolkata'))
|
||
print(bang_d)
|
||
|
||
|
||
# 夏令时
|
||
d = datetime(2013, 3, 10, 1, 45)
|
||
loc_d = central.localize(d)
|
||
print(loc_d)
|
||
later = loc_d + timedelta(minutes=30)
|
||
print(later)
|
||
# 使用normalize修正这个问题
|
||
later = central.normalize(loc_d + timedelta(minutes=30))
|
||
print(later)
|
||
|
||
# 一个普遍策略是先转换为UTC时间,使用UTC时间来进行计算
|
||
print(loc_d)
|
||
utc_d = loc_d.astimezone(pytz.utc)
|
||
print(utc_d)
|
||
|
||
later_utc = utc_d + timedelta(minutes=30)
|
||
# 转回到本地时间
|
||
print(later_utc.astimezone(central))
|
||
|
||
# 根据ISO 3166国家代码查找时区名称
|
||
print(pytz.country_timezones['IN'])
|
||
|
||
if __name__ == '__main__':
|
||
tz_local()
|
||
|