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 字符串格式化代码
Mar 17 Python
Python操作MongoDB数据库PyMongo库使用方法
Apr 27 Python
Python编程中对文件和存储器的读写示例
Jan 25 Python
Python中Iterator迭代器的使用杂谈
Jun 20 Python
python字典DICT类型合并详解
Aug 17 Python
基于scrapy的redis安装和配置方法
Jun 13 Python
Python版名片管理系统
Nov 30 Python
VSCode Python开发环境配置的详细步骤
Feb 22 Python
jupyter notebook 重装教程
Apr 16 Python
Keras 使用 Lambda层详解
Jun 10 Python
社区版pycharm创建django项目的方法(pycharm的newproject左侧没有项目选项)
Sep 23 Python
Python 内存管理机制全面分析
Jan 16 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的一些小问题
2010/07/03 PHP
PHP转换文件夹下所有文件编码的实现代码
2013/06/06 PHP
适用于抽奖程序、随机广告的PHP概率算法实例
2014/04/09 PHP
PHP之预定义接口详解
2015/07/29 PHP
通过PHP简单实例介绍文件上传
2015/12/16 PHP
解决laravel id非自增 模型取回为0 的问题
2019/10/11 PHP
js用Date对象的setDate()函数对日期进行加减操作
2014/09/18 Javascript
简介JavaScript中的push()方法的使用
2015/06/09 Javascript
javascript实现随机显示星星特效
2016/01/28 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
详解springmvc 接收json对象的两种方式
2016/12/06 Javascript
bootstrap modal弹出框的垂直居中
2016/12/14 Javascript
JS排序之快速排序详解
2017/04/08 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
2017/04/25 jQuery
Javascript中parseInt的正确使用方式
2018/10/17 Javascript
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
如何在面试中手写出javascript节流和防抖函数
2020/10/22 Javascript
[00:36]DOTA2上海特级锦标赛 Alliance战队宣传片
2016/03/04 DOTA
[40:19]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.18
2020/12/19 DOTA
python将xml xsl文件生成html文件存储示例讲解
2013/12/03 Python
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
2014/07/09 Python
python统计一个文本中重复行数的方法
2014/11/19 Python
Python中的迭代器漫谈
2015/02/03 Python
Python中优化NumPy包使用性能的教程
2015/04/23 Python
详解Python自建logging模块
2018/01/29 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
PyQt5 QTableView设置某一列不可编辑的方法
2019/06/25 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
解决pycharm debug时界面下方不出现step等按钮及变量值的问题
2020/06/09 Python
Html5 webRTC简单实现视频调用的示例代码
2020/09/23 HTML / CSS
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
通息工程毕业生自荐信
2013/10/16 职场文书
文明礼仪演讲稿
2014/05/12 职场文书
感恩的心主题班会
2015/08/12 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
2016年企业先进员工事迹材料
2016/02/25 职场文书