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之画圈还不简单吗?
Sep 20 Python
python使用PythonMagick将jpg图片转换成ico图片的方法
Mar 26 Python
Python中用memcached来减少数据库查询次数的教程
Apr 07 Python
用Python抢过年的火车票附源码
Dec 07 Python
python利用标准库如何获取本地IP示例详解
Nov 01 Python
浅析PyTorch中nn.Module的使用
Aug 18 Python
django 读取图片到页面实例
Mar 27 Python
Django在Model保存前记录日志实例
May 14 Python
关于Theano和Tensorflow多GPU使用问题
Jun 19 Python
降低python版本的操作方法
Sep 11 Python
Python之字符串的遍历的4种方式
Dec 08 Python
彻底解决pip下载pytorch慢的问题方法
Mar 01 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调用数据库的存贮过程!
2006/10/09 PHP
php 生成随机验证码图片代码
2010/02/08 PHP
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
2012/05/07 PHP
is_uploaded_file函数引发的不能上传文件问题
2013/10/29 PHP
PHP实现的浏览器检查类
2016/04/11 PHP
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
基于vue.js中事件修饰符.self的用法(详解)
2018/02/23 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
2018/04/18 jQuery
webstorm和.vue中es6语法报错的解决方法
2018/05/08 Javascript
JavaScript实用代码小技巧
2018/08/23 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
2018/09/21 Javascript
详解如何快速配置webpack多入口脚手架
2018/12/28 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
2019/10/25 Javascript
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
解决antd的Form组件setFieldsValue的警告问题
2020/10/29 Javascript
[59:26]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第二局
2016/02/28 DOTA
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
Python3 replace()函数使用方法
2018/03/19 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
python opencv旋转图像(保持图像不被裁减)
2018/07/26 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
2019/07/28 Python
python查看数据类型的方法
2019/10/12 Python
python获取引用对象的个数方式
2019/12/20 Python
Pytorch 中retain_graph的用法详解
2020/01/07 Python
用Python绘制漫步图实例讲解
2020/02/26 Python
基于Python爬取51cto博客页面信息过程解析
2020/08/25 Python
加拿大在线隐形眼镜专家:PerfectLens.ca
2016/11/19 全球购物
Debenhams爱尔兰:英国知名的百货公司
2017/01/02 全球购物
HomeAway澳大利亚:预订你的度假屋,公寓、度假村、别墅等
2019/02/20 全球购物
yy司仪主持词
2014/03/22 职场文书
婚前保证书
2014/04/29 职场文书
医院深入开展党的群众路线教育实践活动实施方案
2014/08/27 职场文书
离婚协议书怎么写
2014/09/12 职场文书
处级干部反四风个人对照检查材料思想汇报
2014/09/27 职场文书
工资收入证明
2014/10/07 职场文书
Python 正则模块详情
2021/11/02 Python