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中的元类(metaclass)
Feb 14 Python
Python正则表达式教程之二:捕获篇
Mar 02 Python
Python解决八皇后问题示例
Apr 22 Python
对python Tkinter Text的用法详解
Oct 11 Python
对Python协程之异步同步的区别详解
Feb 19 Python
Python+threading模块对单个接口进行并发测试
Jun 25 Python
python3实现猜数字游戏
Dec 07 Python
python cumsum函数的具体使用
Jul 29 Python
Python求平面内点到直线距离的实现
Jan 19 Python
selenium+python配置chrome浏览器的选项的实现
Mar 18 Python
用Python简陋模拟n阶魔方
Apr 17 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中读写文件实现代码
2011/10/20 PHP
解析strtr函数的效率问题
2013/06/26 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
PHP的cookie与session原理及用法详解
2019/09/27 PHP
FCK调用方法..
2006/12/21 Javascript
一个对于js this关键字的问题
2007/01/09 Javascript
jquery实现的元素的left增加N像素 鼠标移开会慢慢的移动到原来的位置
2010/03/21 Javascript
灵活应用js调试技巧解决样式问题的步骤分享
2012/03/15 Javascript
jQuery.buildFragment使用方法及思路分析
2013/01/07 Javascript
JS删除数组元素的函数介绍
2013/03/27 Javascript
JavaScript自定义事件介绍
2013/08/29 Javascript
js选项卡的实现方法
2015/02/09 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
2018/11/20 Javascript
angular组件间通讯的实现方法示例
2020/05/07 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
2020/07/19 Javascript
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
使用Python实现将list中的每一项的首字母大写
2019/06/11 Python
python跨文件使用全局变量的实现
2020/11/17 Python
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
《会变的花树叶》教学反思
2014/02/10 职场文书
大学老师推荐信
2014/02/25 职场文书
大学生村官演讲稿
2014/04/25 职场文书
培训科主任岗位职责
2014/08/08 职场文书
承租经营合作者协议书
2014/10/01 职场文书
学校感恩节活动策划方案
2014/10/06 职场文书
群众路线教育实践活动整改落实情况汇报
2014/10/28 职场文书
2014年化验室工作总结
2014/11/21 职场文书
人间正道是沧桑观后感
2015/06/15 职场文书
车间安全生产管理制度
2015/08/06 职场文书
校园运动会广播稿
2015/08/19 职场文书
MySql数据库 查询时间序列间隔
2022/05/11 MySQL