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基于递归算法实现的走迷宫问题
Aug 04 Python
Python基于回溯法子集树模板实现图的遍历功能示例
Sep 05 Python
Python中查看变量的类型内存地址所占字节的大小
Jun 26 Python
python批量修改ssh密码的实现
Aug 08 Python
基于pytorch的保存和加载模型参数的方法
Aug 17 Python
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
Sep 20 Python
python中sympy库求常微分方程的用法
Apr 28 Python
浅谈django框架集成swagger以及自定义参数问题
Jul 07 Python
Python预测2020高考分数和录取情况
Jul 08 Python
利用python进行文件操作
Dec 04 Python
python Tkinter的简单入门教程
Apr 11 Python
详解如何用Python实现感知器算法
Jun 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实现基于openssl的加密解密方法
2016/09/30 PHP
因str_replace导致的注入问题总结
2019/08/08 PHP
js 新浪的一个图片播放图片轮换效果代码
2008/07/15 Javascript
JavaScript中的立即执行函数表达式介绍
2015/03/15 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
使用jquery.qrcode.js生成二维码插件
2016/10/17 Javascript
微信小程序 本地存储及登录页面处理实例详解
2017/01/11 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
微信小程序 页面跳转事件绑定的实例详解
2017/09/20 Javascript
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
Javascript实现秒表倒计时功能
2018/11/17 Javascript
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
jquery.pager.js分页实现详解
2019/07/29 jQuery
Nuxt页面级缓存的实现
2020/03/09 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
Python实现list反转实例汇总
2014/11/11 Python
基于wxpython实现的windows GUI程序实例
2015/05/30 Python
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
Python reduce()函数的用法小结
2017/11/15 Python
Python日志模块logging基本用法分析
2018/08/23 Python
Python之lambda匿名函数及map和filter的用法
2019/03/05 Python
python解释器spython使用及原理解析
2019/08/24 Python
Python列表元素常见操作简单示例
2019/10/25 Python
python实现将一维列表转换为多维列表(numpy+reshape)
2019/11/29 Python
Python面向对象之私有属性和私有方法应用案例分析
2019/12/31 Python
Python Pillow(PIL)库的用法详解
2020/09/19 Python
python中字符串的编码与解码详析
2020/12/03 Python
突破canvas语法限制 让他支持链式语法
2012/12/24 HTML / CSS
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
ETO男装官方网店:ETO Jeans
2019/02/28 全球购物
自荐书范文
2013/12/08 职场文书
大宝sod蜜广告词
2014/03/21 职场文书
Nginx解决前端访问资源跨域问题的方法详解
2021/03/31 Servers
Nginx反向代理至go-fastdfs案例讲解
2021/08/02 Servers