Python使用pytz实现时区使用与转换的示例详解

 更新时间:2025年11月04日 09:35:26   作者:Humbunklung  
这篇文章主要为大家详细介绍了Python如何使用pytz实现时区使用与转换,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下

一、Python代码实现:时区转换与时间比较

import pytz
from datetime import datetime

# 1. 获取当前UTC时间
utc_now = datetime.now(pytz.utc)

# 2. 转换为目标时区(示例:上海和纽约)
shanghai_tz = pytz.timezone('Asia/Shanghai')
newyork_tz = pytz.timezone('America/New_York')
shanghai_time = utc_now.astimezone(shanghai_tz)
newyork_time = utc_now.astimezone(newyork_tz)

# 3. 比较两个时区的时间
time_diff = shanghai_time - newyork_time
is_same_day = shanghai_time.date() == newyork_time.date()

print(f"UTC时间: {utc_now.strftime('%Y-%m-%d %H:%M:%S %Z')}")
print(f"上海时间: {shanghai_time.strftime('%Y-%m-%d %H:%M:%S %Z')}")
print(f"纽约时间: {newyork_time.strftime('%Y-%m-%d %H:%M:%S %Z')}")
print(f"时间差: {abs(time_diff.total_seconds()/3600):.1f}小时")
print(f"是否同一天: {'是' if is_same_day else '否'}")

输出示例

UTC时间: 2025-06-26 07:30:00 UTC
上海时间: 2025-06-26 15:30:00 CST
纽约时间: 2025-06-26 03:30:00 EDT
时间差: 12.0小时
是否同一天: 是

二、pytz时区参数表格(常用时区)

下表列出高频使用的时区(完整列表包含563个时区,需通过pytz.all_timezones获取):

大洲时区标识代表城市/地区UTC偏移示例
亚洲Asia/Shanghai中国上海UTC+8
Asia/Tokyo日本东京UTC+9
Asia/Dubai阿联酋迪拜UTC+4
美洲America/New_York美国纽约UTC-4 (夏令时)
America/Los_Angeles美国洛杉矶UTC-7 (夏令时)
America/Sao_Paulo巴西圣保罗UTC-3
欧洲Europe/London英国伦敦UTC+1 (夏令时)
Europe/Paris法国巴黎UTC+2 (夏令时)
Europe/Moscow俄罗斯莫斯科UTC+3
大洋洲Australia/Sydney澳大利亚悉尼UTC+10
Pacific/Auckland新西兰奥克兰UTC+12
非洲Africa/Cairo埃及开罗UTC+2
Africa/Johannesburg南非约翰内斯堡UTC+2
极地Antarctica/McMurdo南极麦克默多站UTC+12
通用UTC协调世界时UTC±0

三、扩展说明

获取全部时区列表

import pytz
print("总时区数量:", len(pytz.all_timezones))  # 输出563
for tz in pytz.common_timezones:  # 常用时区(约403个)
    print(tz)

关键注意事项

  • 夏令时影响:时区偏移量会随夏令时变化(如纽约夏季为UTC-4,冬季为UTC-5)
  • 时区命名规范:大洲/城市格式(避免使用EST/CST等缩写,因其不唯一)
  • 数据库更新:通过pip install --upgrade pytz更新时区规则

时区比较场景示例

# 检查两个时区是否均为星期一
def is_both_monday(tz1: str, tz2: str) -> bool:
    tz1_time = datetime.now(pytz.timezone(tz1))
    tz2_time = datetime.now(pytz.timezone(tz2))
    return tz1_time.weekday() == 0 and tz2_time.weekday() == 0  # 0=周一

print(is_both_monday("Asia/Shanghai", "Europe/London"))  # 根据当前日期返回布尔值

查看有哪些时区

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

# -*- coding: utf-8 -*-
import pytz
 
print(pytz.all_timezones)
print(pytz.common_timezones)

查询某个的时区

可以根据国家代码查找这个国家的所有时区。

创建时区对象

根据上面得到的时区信息,就可以创建指定的时区对象。比如创建上海时区对象:

tz = pytz.timezone('Asia/Shanghai')

时间按时区转换

# -*- 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)

得到某个时区的时间

然后在创建时间对象时进行指定上面时区,就可以得到指定时区的日期时间:

>>> import datetime
>>> datetime.datetime.now(tz)
datetime.datetime(2009, 2, 21, 15, 12, 33, 906000, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)

到此这篇关于Python使用pytz实现时区使用与转换的示例详解的文章就介绍到这了,更多相关Python pytz时区使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Jupyter Notebook/VSCode导出PDF中文不显示的解决

    Jupyter Notebook/VSCode导出PDF中文不显示的解决

    这篇文章主要介绍了Jupyter Notebook/VSCode导出PDF中文不显示的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Python统计列表中的重复项出现的次数的方法

    Python统计列表中的重复项出现的次数的方法

    这篇文章主要介绍了Python统计列表中的重复项出现的次数的方法,需要的朋友可以参考下
    2014-08-08
  • Python2.7读取PDF文件的方法示例

    Python2.7读取PDF文件的方法示例

    这篇文章主要介绍了Python2.7读取PDF文件的方法,结合实例形式分析了Python2.7基于PDFMiner模块实现针对pdf文件的读取功能相关操作技巧,需要的朋友可以参考下
    2017-07-07
  • Python实现美化版端口进程管理工具

    Python实现美化版端口进程管理工具

    这篇文章主要为大家详细介绍了如何使用Python实现一个美化版的端口进程管理工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2025-03-03
  • 如何使用pyinstaller打包时引入自己编写的库

    如何使用pyinstaller打包时引入自己编写的库

    这篇文章主要介绍了如何使用pyinstaller打包时引入自己编写的库,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • 简述python Scrapy框架

    简述python Scrapy框架

    这篇文章主要介绍了python Scrapy框架的相关资料,帮助大家开始学习python 爬虫,感兴趣的朋友可以了解下
    2020-08-08
  • Python中pandas groupby()用法案例详解

    Python中pandas groupby()用法案例详解

    groupby()函数是pandas库中一个非常强大的工具,它允许我们按照一个或多个特征对数据进行分组,并对每个组进行聚合、转换和过滤操作,本文将探讨pandas库中非常强大的groupby()函数,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • Flask框架Jinjia模板常用语法总结

    Flask框架Jinjia模板常用语法总结

    这篇文章主要介绍了Flask框架Jinjia模板常用语法,结合实例形式总结分析了Jinjia模板的变量、赋值、流程控制、函数、块、宏等基本使用方法,需要的朋友可以参考下
    2018-07-07
  • Python 简单计算要求形状面积的实例

    Python 简单计算要求形状面积的实例

    今天小编就为大家分享一篇Python 简单计算要求形状面积的实例,具有很好的参考价值
    2020-01-01
  • 使用Python的Tornado框架实现一个Web端图书展示页面

    使用Python的Tornado框架实现一个Web端图书展示页面

    Tornado是Python的一款高人气Web开发框架,这里我们来展示使用Python的Tornado框架实现一个Web端图书展示页面的实例,通过该实例可以清楚地学习到Tornado的模板使用及整个Web程序的执行流程.
    2016-07-07

最新评论