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 21 Python
python实现简单socket程序在两台电脑之间传输消息的方法
Mar 13 Python
浅谈python字符串方法的简单使用
Jul 18 Python
Python错误提示:[Errno 24] Too many open files的分析与解决
Feb 16 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
Dec 12 Python
Python Web静态服务器非堵塞模式实现方法示例
Nov 21 Python
利用Python代码实现一键抠背景功能
Dec 29 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
May 19 Python
python利用paramiko实现交换机巡检的示例
Sep 22 Python
paramiko使用tail实时获取服务器的日志输出详解
Dec 06 Python
如何在vscode中安装python库的方法步骤
Jan 06 Python
浅谈Python基础之列表那些事儿
May 11 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执行sql语句的写法
2009/03/10 PHP
PHP与Java进行通信的实现方法
2013/10/21 PHP
教你如何解密 “ PHP 神盾解密工具 ”
2014/06/20 PHP
php实现删除空目录的方法
2015/03/16 PHP
推荐十款免费 WordPress 插件
2015/03/24 PHP
php实现用户注册密码的crypt加密
2017/06/08 PHP
JavaScript 异步调用框架 (Part 4 - 链式调用)
2009/08/04 Javascript
JQuery实现的在新窗口打开链接的方法小结
2010/04/22 Javascript
js弹窗代码 可以指定弹出间隔
2010/07/03 Javascript
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
js数组方法扩展实现数组统计函数
2014/04/09 Javascript
跟我学习javascript的浮点数精度
2015/11/16 Javascript
jquery无限级联下拉菜单简单实例演示
2015/11/23 Javascript
Vue 页面状态保持页面间数据传输的一种方法(推荐)
2018/11/01 Javascript
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
Python列表(list)常用操作方法小结
2015/02/02 Python
Python在不同目录下导入模块的实现方法
2017/10/27 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
python Django里CSRF 对应策略详解
2019/08/05 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
使用虚拟环境打包python为exe 文件的方法
2019/08/29 Python
使用OpenCV实现仿射变换—缩放功能
2019/08/29 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
2020/11/17 Python
详解Css3新特性应用之过渡与动画
2017/01/10 HTML / CSS
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
2013/01/30 HTML / CSS
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
世界上最值得信赖的多日游在线市场:TourRadar
2018/07/20 全球购物
.NET常见笔试题集
2012/12/01 面试题
班级团队活动方案
2014/08/14 职场文书
办理收楼委托书范本
2014/10/09 职场文书
2014年党的群众路线学习心得体会
2014/11/05 职场文书
2015年初中生自我评价范文
2015/03/03 职场文书
呼兰河传读书笔记
2015/06/30 职场文书
广告文案的撰写技巧(实用干货)
2019/08/23 职场文书