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 相关文章推荐
Linux下用Python脚本监控目录变化代码分享
May 21 Python
浅谈Python 字符串格式化输出(format/printf)
Jul 21 Python
Python实现简易端口扫描器代码实例
Mar 15 Python
python简单线程和协程学习心得(分享)
Jun 14 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
Apr 28 Python
python中的json总结
Oct 11 Python
Django安装配置mysql的方法步骤
Oct 15 Python
使用Django连接Mysql数据库步骤
Jan 15 Python
Python 限制线程的最大数量的方法(Semaphore)
Feb 22 Python
Django中Aggregation聚合的基本使用方法
Jul 09 Python
Python模拟登录requests.Session应用详解
Nov 17 Python
Python多个MP4合成视频的实现方法
Jul 16 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学习 字符串课件
2008/06/15 PHP
网页游戏开发入门教程三(简单程序应用)
2009/11/02 PHP
浅析PHP7新功能及语法变化总结
2016/06/17 PHP
JavaScript网页制作特殊效果用随机数
2007/05/22 Javascript
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
javascript中的float运算精度实例分析
2010/08/21 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
2012/10/11 Javascript
jQuery插件实现屏蔽单个元素使用户无法点击
2013/04/12 Javascript
Javascript操作URL函数修改版
2013/11/07 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
jQuery实现鼠标经过事件的延时处理效果
2020/08/20 Javascript
彻底解决 webpack 打包文件体积过大问题
2017/07/07 Javascript
浅谈NodeJs之数据库异常处理
2017/10/25 NodeJs
微信小程序new Date()方法失效问题解决方法
2019/07/29 Javascript
微信小程序实现弹框效果
2020/05/26 Javascript
[01:12:40]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第三场 1月25日
2021/03/11 DOTA
python文件和目录操作方法大全(含实例)
2014/03/12 Python
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
Python计算一个文件里字数的方法
2015/06/15 Python
Python selenium 三种等待方式解读
2016/09/15 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
2017/08/03 Python
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
老生常谈CSS中的长度单位
2016/06/27 HTML / CSS
为什么group by 和order by会使查询变慢
2014/05/16 面试题
主题党日活动总结
2014/07/08 职场文书
个人向公司借款协议书
2014/10/09 职场文书
2014年保洁员工作总结
2014/11/19 职场文书
2014年司机工作总结
2014/11/21 职场文书
给病人的慰问信
2015/03/23 职场文书
数据设计之权限的实现
2022/08/05 MySQL