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


Posted in Python onOctober 23, 2020

如下所示:

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 相关文章推荐
python文件操作整理汇总
Oct 21 Python
Python转换HTML到Text纯文本的方法
Jan 15 Python
Python批量转换文件编码格式
May 17 Python
python实现对文件中图片生成带标签的txt文件方法
Apr 27 Python
详解python单元测试框架unittest
Jul 02 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
Aug 10 Python
Python CVXOPT模块安装及使用解析
Aug 01 Python
Django认证系统实现的web页面实现代码
Aug 12 Python
python requests更换代理适用于IP频率限制的方法
Aug 21 Python
Python中url标签使用知识点总结
Jan 16 Python
Django操作session 的方法
Mar 09 Python
python上传时包含boundary时的解决方法
Apr 08 Python
Python可视化工具如何实现动态图表
Oct 23 #Python
python 匿名函数与三元运算学习笔记
Oct 23 #Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
Oct 23 #Python
Python+OpenCV图像处理——实现直线检测
Oct 23 #Python
使用Python Tkinter实现剪刀石头布小游戏功能
Oct 23 #Python
Python 列表推导式需要注意的地方
Oct 23 #Python
python中的split、rsplit、splitlines用法说明
Oct 23 #Python
You might like
PHP 采集心得技巧
2009/05/15 PHP
php基础教程 php内置函数实例教程
2012/08/21 PHP
php页面消耗内存过大的处理办法
2013/03/18 PHP
探讨PHP中this,self,parent的区别详解
2013/06/08 PHP
php一些错误处理的方法与技巧总结
2013/08/10 PHP
php定时计划任务与fsockopen持续进程实例
2014/05/23 PHP
PHP中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
php结合md5实现的加密解密方法
2016/01/25 PHP
JS 拼图游戏 面向对象,注释完整。
2009/06/18 Javascript
基于Jquery的简单&简陋Tabs插件代码
2010/02/09 Javascript
js下获取div中的数据的原理分析
2010/04/07 Javascript
基于jQuery的获得各种控件Value的方法
2010/11/19 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
js动态创建、删除表格示例代码
2013/08/07 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
2014/02/12 Javascript
document.write的几点使用心得
2014/05/14 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
canvas实现图像放大镜
2017/02/06 Javascript
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
js禁止表单重复提交
2017/08/29 Javascript
详解React中合并单元格的正确写法
2019/01/08 Javascript
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
小程序自定义弹框效果
2020/11/16 Javascript
python3实现ftp服务功能(客户端)
2017/03/24 Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
2020/04/22 Python
基于matplotlib中ion()和ioff()的使用详解
2020/06/16 Python
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
给老师的检讨书
2014/02/11 职场文书
聚美优品广告词改编
2014/03/14 职场文书
公司合作意向书
2014/04/01 职场文书
酒店客房服务员岗位职责
2015/04/09 职场文书
离婚被告答辩状
2015/05/22 职场文书
家庭经济困难证明
2015/06/23 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
Python中常见的反爬机制及其破解方法总结
2021/06/10 Python
浅谈MySQL之浅入深出页原理
2021/06/23 MySQL