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 20 Python
使用Python的Zato发送AMQP消息的教程
Apr 16 Python
Python遍历文件夹和读写文件的实现代码
Aug 28 Python
Python pymongo模块用法示例
Mar 31 Python
Python Matplotlib实现三维数据的散点图绘制
Mar 19 Python
Python微信操控itchat的方法
May 31 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
Jun 26 Python
Python爬虫之urllib基础用法教程
Oct 12 Python
python字符串的拼接方法总结
Nov 18 Python
Python绘制词云图之可视化神器pyecharts的方法
Feb 23 Python
两行代码解决Jupyter Notebook中文不能显示的问题
Apr 24 Python
分享7个 Python 实战项目练习
Mar 03 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
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
PHP使用mysql_fetch_object从查询结果中获取对象集的方法
2015/03/18 PHP
php支持断点续传、分块下载的类
2016/05/02 PHP
个人总结的一些关于String、Function、Array的属性和用法
2007/01/10 Javascript
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
推荐20家国外的脚本下载网站
2011/04/28 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
2013/02/06 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
2014/02/12 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
2016/05/13 Javascript
jQuery中deferred对象使用方法详解
2016/07/14 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
JavaScript实现解析INI文件内容的方法
2016/11/17 Javascript
从零学习node.js之简易的网络爬虫(四)
2017/02/22 Javascript
JS实现课堂随机点名和顺序点名
2017/03/09 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
JavaScript箭头(arrow)函数详解
2017/06/04 Javascript
React中jquery引用的实现方法
2017/09/12 jQuery
ES6学习教程之模板字符串详解
2017/10/09 Javascript
js通过Date对象实现倒计时动画效果
2017/10/27 Javascript
javascript中new Array()和var arr=[]用法区别
2017/12/01 Javascript
详解vuex之store源码简单解析
2019/06/13 Javascript
js实现简易计算器功能
2019/10/18 Javascript
基于Vue的侧边目录组件的实现
2020/02/05 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
Python实现全角半角转换的方法
2014/08/18 Python
python动态性强类型用法实例
2015/05/09 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
pycham查看程序执行的时间方法
2018/11/29 Python
Python tkinter实现图片标注功能(完整代码)
2019/12/08 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
pytorch 多分类问题,计算百分比操作
2020/07/09 Python
英国女士家居服网站:hush
2017/08/09 全球购物
澳大利亚购买最佳炊具品牌网站:Cookware Brands
2019/02/16 全球购物
2015年销售部工作总结范文
2015/04/27 职场文书
vue如何使用模拟的json数据查看效果
2022/03/31 Vue.js