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实现删除文件但保留指定文件
Jun 21 Python
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
Jun 15 Python
Python实现爬虫从网络上下载文档的实例代码
Jun 13 Python
python简单操作excle的方法
Sep 12 Python
pygame游戏之旅 添加游戏介绍
Nov 20 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
Jun 21 Python
详解Python Qt的窗体开发的基本操作
Jul 14 Python
python sklearn常用分类算法模型的调用
Oct 16 Python
python实现简单银行管理系统
Oct 25 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
Dec 02 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
Jan 20 Python
tensorflow 分类损失函数使用小记
Feb 18 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下打开URL地址的几种方法小结
2010/05/16 PHP
分享php分页的功能模块
2015/06/16 PHP
php中session定期自动清理的方法
2015/11/12 PHP
php while循环控制的简单实例
2016/05/30 PHP
PHP读取大文件末尾N行的高效方法推荐
2016/06/03 PHP
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
基于jquery的时间段实现代码
2012/08/02 Javascript
extjs 04_grid 单击事件新发现
2012/11/27 Javascript
js 中的switch表达式使用示例
2020/06/03 Javascript
js获取select默认选中的Option并不是当前选中值
2014/05/07 Javascript
js跨域访问示例(客户端/服务端)
2014/05/19 Javascript
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
JavaScript极简入门教程(三):数组
2014/10/25 Javascript
jquery+CSS实现的水平布局多级网页菜单效果
2015/08/24 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
谈谈对JavaScript原生拖放的深入理解
2016/09/20 Javascript
小程序实现按下录音松开识别语音
2019/11/22 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
2020/04/26 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
vue3.0封装轮播图组件的步骤
2021/03/04 Vue.js
Python ftp上传文件
2016/02/13 Python
Python编程实现蚁群算法详解
2017/11/13 Python
python实现二叉树的遍历
2017/12/11 Python
django 发送手机验证码的示例代码
2018/04/25 Python
Python闭包思想与用法浅析
2018/12/27 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
2019/02/21 Python
24式加速你的Python(小结)
2019/06/13 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
Python如何实现机器人聊天
2020/09/10 Python
python实现二分查找算法
2020/09/18 Python
国际化的太阳镜及太阳镜配件零售商:Sunglass Hut
2016/07/26 全球购物
2014年健康教育实施方案
2014/02/17 职场文书
2015双创工作总结
2015/07/24 职场文书
大学生社会实践感想
2015/08/11 职场文书