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 相关文章推荐
详解Python3中的Sequence type的使用
Aug 01 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
Jun 14 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
Jun 16 Python
浅谈使用Python变量时要避免的3个错误
Oct 30 Python
Python插件virtualenv搭建虚拟环境
Nov 20 Python
利用Python正则表达式过滤敏感词的方法
Jan 21 Python
python通过SSH登陆linux并操作的实现
Oct 10 Python
Keras 实现加载预训练模型并冻结网络的层
Jun 15 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
Jun 22 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
Jan 29 Python
Python pandas之求和运算和非空值个数统计
Aug 07 Python
Python必备技巧之字符数据操作详解
Mar 23 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中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
ThinkPHP中自定义错误页面和提示页面实例
2014/11/22 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
PHP7新增函数
2021/03/09 PHP
Add Formatted Text to a Word Document
2007/06/15 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
jQuery中insertBefore()方法用法实例
2015/01/08 Javascript
使用AngularJS制作一个简单的RSS阅读器的教程
2015/06/18 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
2016/03/07 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
2016/05/17 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
原生JS实现在线问卷调查投票特效
2017/01/03 Javascript
Jquery与Bootstrap实现后台管理页面增删改查功能示例
2017/01/22 Javascript
xmlplus组件设计系列之按钮(2)
2017/04/26 Javascript
vue.js项目nginx部署教程
2018/04/05 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
记React connect的几种写法(小结)
2018/09/18 Javascript
axios携带cookie配置详解(axios+koa)
2018/12/28 Javascript
详解JavaScript中的强制类型转换
2019/04/15 Javascript
微信jssdk踩坑之签名错误invalid signature
2020/05/19 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
Python GAE、Django导出Excel的方法
2008/11/24 Python
浅谈python 里面的单下划线与双下划线的区别
2017/12/01 Python
python opencv设置摄像头分辨率以及各个参数的方法
2018/04/02 Python
python实现下载pop3邮件保存到本地
2018/06/19 Python
推荐10款最受Python开发者欢迎的Python IDE
2018/09/16 Python
python单例设计模式实现解析
2020/01/07 Python
django的autoreload机制实现
2020/06/03 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
Kiwi.com中国:找到特价机票并发现新目的地
2019/10/27 全球购物
大学毕业论文致谢词
2015/05/14 职场文书
2019年教师节:送给所有老师的祝福语
2019/09/05 职场文书
Python预测分词的实现
2021/06/18 Python