专栏首页算法微时光Python pytz时区转换

Python pytz时区转换

pytz

pytz将Olson tz数据库带入Python。该库允许使用Python 2.4或更高版本进行准确的跨平台时区计算。它还解决了夏令时结束时时间模糊的问题

安装

pip install pytz

image.png

验证下是否安装成功:

什么是UTC

“ UTC”是世界标准时间。它是格林威治标准时间(GMT)和世界时的各种定义的继承者,但又与之不同。UTC现在是调节时钟和时间测量的全球标准。

所有其他时区都是相对于UTC定义的,并包括UTC + 0800之类的偏移量-小时数,用于从UTC进行加减或加减以得出本地时间。UTC不会出现夏令时,因此它成为执行日期算术的有用时区,而不必担心夏令时转换,您所在国家/地区更改时区或漫游到多个时区的移动计算机所造成的混乱和歧义。

实战

pytz.country_timezones(‘国家代码’):此方法可以拿到某个国家的时区名列表。

查看下美国的时区:

# -*- coding: utf-8 -*-
import pytz
print(pytz.country_timezones('us'))

查看下中国的时区:

# -*- coding: utf-8 -*-
import pytz
print(pytz.country_timezones('cn'))

pytz.timezone(‘时区名’):此方法能获取一个tzinfo对象,该对象可在datetime生成时间中以参数的形式放入,即可生成对应时区的时间。

# -*- coding: utf-8 -*-
import pytz
import datetime

utc = pytz.timezone('UTC')
print(datetime.datetime.now(tz=utc))

查看有哪些时区 pytz有all_timezonescommon_timezones这两个属性来查看有哪些时区。

# -*- coding: utf-8 -*-
import pytz

print(pytz.all_timezones)
print(pytz.common_timezones)

时间按时区转换

# -*- coding: utf-8 -*-
import pytz
import datetime

utc = pytz.timezone('UTC')
now_time = datetime.datetime.now(tz=utc)
print(now_time)

shanghai = pytz.timezone('Asia/Shanghai')
shanghai_time = datetime.datetime.now(tz=shanghai)
print(shanghai_time)

构建本地化时间 pytz库仅支持构建本地化时间的两种方式。

第一种是使用pytz库提供的localize函数。

这用于本地化原始日期时间(没有时区信息的日期时间):

# -*- coding: utf-8 -*-
import pytz
from datetime import datetime, timedelta

fmt = '%Y-%m-%d %H:%M:%S %Z%z'
eastern = pytz.timezone('US/Eastern')
print(eastern.zone)
loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0))
print(loc_dt.strftime(fmt))

第二种方法是使用标准astimezone函数转换现有的本地化时间:

# -*- coding: utf-8 -*-
import pytz
from datetime import datetime, timedelta

fmt = '%Y-%m-%d %H:%M:%S %Z%z'
eastern = pytz.timezone('US/Eastern')
print(eastern.zone)
loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0))
print(loc_dt.strftime(fmt))

amsterdam = pytz.timezone('Europe/Amsterdam')
ams_dt = loc_dt.astimezone(amsterdam)
print(ams_dt.strftime(fmt))

参考

pypi

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • HIDL学习笔记之HIDL C++(第一天)

    HAL 接口定义语言(简称 HIDL,发音为“hide-l”)是用于指定 HAL 和其用户之间的接口的一种接口描述语言 (IDL)。HIDL 允许指定类型和方法...

    李小白是一只喵
  • Wasmtime之源码编译流程

    李小白是一只喵
  • unity3d之c#编译器修改

    选择External Tools,然后再External Script Editor下拉框里选择本地编译器

    李小白是一只喵
  • python基础—datetime模块

    dogfei
  • MySQL中插入语句(Insert)的几种使用方式

    使用Inset into 表名 values(值1,值2)进行插入,并对查看插入数据是否成功

    大猫的Java笔记
  • 95后最喜欢的职业竟然是...你绝对想不到!

    今年毕业季,“95后”也成为了职场新秀,他们如何求职择业?一份网络调查报告显示,近六成想当网红,近四成想创业。 在宽松时代下成长的95后相当“小确幸”,追求个人...

    小莹莹
  • 空降兵如何管理团队?

    张树臣
  • React组件库Ant Design的安装与使用

    2、Ant Design 使用 TypeScript 构建,提供完整的类型定义文件

    Leophen
  • Kaggle 实战:Quora Question Pairs

    由于这次数据量太大,并且涉及到自然语言处理,我自己一台 4G 内存的笔记本完全无法完成大计算量的处理。所以这次文章主要介绍几个简单特征的计算以及可视化,算是给自...

    serena
  • Bootstrap Table含有按钮时表格不对齐

    使用Bootstrap Table的时候,在含有按钮的情况,有时候表格的线垂直方向上不对齐

    tianyawhl

扫码关注云+社区

领取腾讯云代金券