python 带时区的日期格式化操作

 更新时间:2020年10月23日 15:00:58   作者:leaves_story  
这篇文章主要介绍了python 带时区的日期格式化操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

如下所示:

Wed, 23 Oct 2019 21:12:01 +0800

Wed, 23 Oct 2019 06:08:37 +0000 (GMT)

Fri, 11 Oct 2019 12:42:07 +0800 (CST)

Wed, 23 Oct 2019 06:08:37 +0000 (UTC)

几种不同的日期格式化方式,不同的时区时间转换成北京时间,也就是东八区的时间,注意的是后面的时区表示方式,

  def getTimeStamp(self, date):
    result = re.search(r"[\-\+]\d+", date)
    if result:
      time_area = result.group()
      symbol = time_area[0]
      offset = int(time_area[1]) + int(time_area[2])
      if symbol == "+":
        format_str = '%a, %d %b %Y %H:%M:%S '+ time_area
        if "UTC" in date:
          format_str = '%a, %d %b %Y %H:%M:%S '+ time_area+ ' (UTC)'
        if "GMT" in date:
          format_str = '%a, %d %b %Y %H:%M:%S ' + time_area + ' (GMT)'
        if "CST" in date:
          format_str = '%a, %d %b %Y %H:%M:%S ' + time_area + ' (CST)'
        utcdatetime = time.strptime(date, format_str)
        tempsTime = time.mktime(utcdatetime)
        tempsTime = datetime.datetime.fromtimestamp(tempsTime)
        if offset > 8:
          offset = offset -8
        tempsTime = tempsTime + datetime.timedelta(hours=offset)
        localtimestamp = tempsTime.strftime("%Y-%m-%d")
      else:
        format_str = '%a, %d %b %Y %H:%M:%S ' + time_area
        utcdatetime = time.strptime(date, format_str)
        tempsTime = time.mktime(utcdatetime)
        tempsTime = datetime.datetime.fromtimestamp(tempsTime)
        tempsTime = tempsTime + datetime.timedelta(hours=(offset + 8))
        localtimestamp = tempsTime.strftime("%Y-%m-%d")
    return localtimestamp

补充知识:Python处理带timezone的datetime类型

在存储时间类型到数据库的时候,通常使用DateTime类型。使用DateTime类型就会遇到时区timezone的问题。为了能够处理timezone, 推荐存数据库的使用存入的是基于UTC的时间日期,在本地取用的时候在转成本地时间。

Python定义了抽象类tzinfo, 这个class不能直接使用。3.x版本(至少3.4, 3.5)定义了timezone class。但是这个timezone还是不如第三方pytz类好用。

还有一个问题就是如何得到本机的timezone。在time class里面可以得到一个time.timezone, 是一个基于秒的offset值。注意这个time不是datetime.time, 就是time,用于os相关的时间信息。不是很好用,推荐tzlocal库。

安装pytz和tzlocal

使用pip安装就可以了。

pip install pytz

pip install tzlocal

如何使用

得到当前时间,用于数据的存储

from datetime import datetime

t = datetime.utcnow()

已知本地时间,需要转成UTC时间用于存储

import pytz
from tzlocal import get_localzone
tz = get_localzone()  #获得本地timezone
utc = pytz.utc     #获得UTC timezone
dt = datetime(2016, 6, 12, 5, 0, 0)
loc_dt = tz.localize(dt) #将DateTime数据贴上timezone
utc_dt = loc_dt.astimezone(utc)  #转换到新的timezone

已知UTC时间,转本地

import pytz
from tzlocal import get_localzone
utc = pytz.utc
tz = get_localzone()
t = datetime(x,x,x,x,x,x)
utc_dt = utc.localize(t)
loc_dt = utc_dt.astimezone(tz)

以上这篇python 带时区的日期格式化操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python 中eval()函数的正确使用及其风险分析(使用示例)

    Python 中eval()函数的正确使用及其风险分析(使用示例)

    eval()是一个功能强大的工具,但使用时必须非常小心,了解其工作原理和潜在的风险是确保安全使用的关键,通过遵循上述建议,可以在享受eval()带来的便利的同时,最大限度地减少安全风险,本文介绍Python 中`eval()`函数的正确使用及其风险分析,感兴趣的朋友一起看看吧
    2024-07-07
  • 一文教你利用Python租到最合适的房子

    一文教你利用Python租到最合适的房子

    这篇文章主要为大家详细介绍了如何利用Python语言在爬取到房源数据后,挑选出符合自己要求的房子呢?感兴趣的小伙伴可以跟随小编一起学习一下
    2022-09-09
  • python实现保存网页到本地示例

    python实现保存网页到本地示例

    这篇文章主要介绍了python实现保存网页到本地示例,需要的朋友可以参考下
    2014-03-03
  • apache部署python程序出现503错误的解决方法

    apache部署python程序出现503错误的解决方法

    这篇文章主要给大家介绍了关于在apahce部署python程序出现503错误的解决方法,文中通过示例代码介绍的非常详细,对同样遇到这个问题的朋友们具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-07-07
  • Python 虚拟空间的使用代码详解

    Python 虚拟空间的使用代码详解

    这篇文章主要介绍了Python 虚拟空间的使用,本文通过示例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • Mac PyCharm中的.gitignore 安装设置教程

    Mac PyCharm中的.gitignore 安装设置教程

    这篇文章主要介绍了Mac PyCharm中的.gitignore 安装设置教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • 基于Python的PIL库学习详解

    基于Python的PIL库学习详解

    这篇文章主要介绍了基于Python的PIL库学习详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • python threading模块的使用指南

    python threading模块的使用指南

    python的thread模块是底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用。本文详细的讲述了threading模块的用法
    2021-06-06
  • Python利用tkinter实现一个简易番茄钟的示例代码

    Python利用tkinter实现一个简易番茄钟的示例代码

    番茄钟是番茄工作法使用的一个时间表,即选择一个待完成的任务,将番茄时间设为25分钟,专注工作,中途不允许做任何与该任务无关的事,直到番茄时钟响起,然后在纸上画一个X短暂休息一下。本文用tkinter实现一个简易番茄钟,需要的可以参考一下
    2022-12-12
  • Python操作MongoDB数据库的方法示例

    Python操作MongoDB数据库的方法示例

    这篇文章主要介绍了Python操作MongoDB数据库的方法,结合实例形式分析了Python命令行模式下操作MongoDB数据库实现连接、查找、删除、排序等相关操作技巧,需要的朋友可以参考下
    2018-01-01

最新评论