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的bottle框架跨域请求报错问题的处理方法
Mar 19 Python
python3操作mysql数据库的方法
Jun 23 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
Jan 04 Python
PyQt5每天必学之日历控件QCalendarWidget
Apr 19 Python
python爬取个性签名的方法
Jun 17 Python
详解django自定义中间件处理
Nov 21 Python
详解Python读取yaml文件多层菜单
Mar 23 Python
python3 enum模块的应用实例详解
Aug 12 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
Sep 02 Python
python 协程 gevent原理与用法分析
Nov 22 Python
基于keras输出中间层结果的2种实现方式
Jan 24 Python
python构造IP报文实例
May 05 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
世界第一个无线广播电台 KDKA
2021/03/01 无线电
用PHP函数解决SQL injection
2006/12/09 PHP
关于JSON以及JSON在PHP中的应用技巧
2013/11/27 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
PHP学习笔记之session
2018/05/06 PHP
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
2010/06/21 Javascript
date.parse在IE和FF中的区别
2010/07/29 Javascript
jQuery链式操作如何实现以及为什么要用链式操作
2013/01/17 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
2015/01/23 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
jquery实现图片上传前本地预览功能
2016/05/10 Javascript
vue基于Vue2.0和高德地图的地图组件实例
2017/04/28 Javascript
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
Vue瀑布流插件的使用示例
2018/09/19 Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
2020/04/09 Javascript
[01:03:27]NAVI vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python实现在控制台输入密码不显示的方法
2015/07/02 Python
在Python的Django框架的视图中使用Session的方法
2015/07/23 Python
python多进程和多线程究竟谁更快(详解)
2017/05/29 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
django基于restframework的CBV封装详解
2019/08/08 Python
基于python的BP神经网络及异或实现过程解析
2019/09/30 Python
小程序canvas中文字设置居中锚点
2019/04/16 HTML / CSS
世界领先的以旅馆为主的在线预订平台:Hostelworld
2016/10/09 全球购物
全球度假村:Club Med
2017/11/27 全球购物
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
美国手机支架公司:PopSockets
2019/11/27 全球购物
校班主任推荐信范文
2013/12/03 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
2015年教师工作总结范文
2015/03/31 职场文书
故意伤害罪辩护词
2015/05/21 职场文书
2016大学军训通讯稿
2015/11/25 职场文书
利用html+css实现菜单栏缓慢下拉效果的示例代码
2021/03/30 HTML / CSS
go 实现简易端口扫描的示例
2021/05/22 Golang
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技