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 正则表达式操作指南
May 04 Python
python测试驱动开发实例
Oct 08 Python
python采用django框架实现支付宝即时到帐接口
May 17 Python
使用Pyinstaller的最新踩坑实战记录
Nov 08 Python
使用Python快速制作可视化报表的方法
Feb 03 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
May 31 Python
分析运行中的 Python 进程详细解析
Jun 22 Python
Win10+GPU版Pytorch1.1安装的安装步骤
Sep 27 Python
Python3操作YAML文件格式方法解析
Apr 10 Python
TensorFlow保存TensorBoard图像操作
Jun 23 Python
keras topN显示,自编写代码案例
Jul 03 Python
python 发送邮件的四种方法汇总
Dec 02 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 定界符 使用技巧
2009/06/14 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
2013/11/13 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
PHP实现自动识别Restful API的返回内容类型
2015/02/07 PHP
php parse_str() 函数的定义和用法
2016/05/23 PHP
PHP内置加密函数详解
2016/11/20 PHP
php中strtotime函数性能分析
2016/11/20 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
2019/04/11 PHP
javascript iframe中打开文件,并检测iframe存在否
2008/12/28 Javascript
datagrid框架的删除添加与修改
2013/04/08 Javascript
JS获取键盘上任意按键的值(实例代码)
2013/11/12 Javascript
jquery iframe操作详细解析
2013/11/20 Javascript
JavaScript中调用函数的4种方式代码实例
2015/07/08 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
AngularJS  ng-table插件设置排序
2016/09/21 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
Node.js中.pfx后缀文件的处理方法
2017/03/10 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
原生js封装运动框架的示例讲解
2017/10/01 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
2018/07/05 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
Python中查看文件名和文件路径
2017/03/31 Python
新手常见6种的python报错及解决方法
2018/03/09 Python
Python 分享10个PyCharm技巧
2019/07/13 Python
Django 实现xadmin后台菜单改为中文
2019/11/15 Python
webapp字号大小跟随系统字号大小缩放的示例代码
2018/12/26 HTML / CSS
六十岁生日答谢词
2014/01/10 职场文书
大学军训感言200字
2014/02/26 职场文书
秋季校运会广播稿100字
2014/09/18 职场文书
倡议书作文
2015/01/19 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
创业计划书之DIY自助厨房
2019/09/06 职场文书
Python合并多张图片成PDF
2021/06/09 Python