python 带时区的日期格式化操作
如下所示:

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 带时区的日期格式化操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
代码知识SEO上一篇 : Java使用BigDecimal精确运算浮点数
下一篇 : Android实现图像切换器
-
SEO外包最佳选择国内专业的白帽SEO机构,熟知搜索算法,各行业企业站优化策略!
SEO公司
-
可定制SEO优化套餐基于整站优化与品牌搜索展现,定制个性化营销推广方案!
SEO套餐
-
SEO入门教程多年积累SEO实战案例,从新手到专家,从入门到精通,海量的SEO学习资料!
SEO教程
-
SEO项目资源高质量SEO项目资源,稀缺性外链,优质文案代写,老域名提权,云主机相关配置折扣!
SEO资源
-
SEO快速建站快速搭建符合搜索引擎友好的企业网站,协助备案,域名选择,服务器配置等相关服务!
SEO建站
-
快速搜索引擎优化建议没有任何SEO机构,可以承诺搜索引擎排名的具体位置,如果有,那么请您多注意!专业的SEO机构,一般情况下只能确保目标关键词进入到首页或者前几页,如果您有相关问题,欢迎咨询!