python的日期格式化_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 带时区的日期格式化操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持萬仟网。

希望与广大网友互动??

点此进行留言吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中的日期格式化可以使用strftime()函数来实现。下面是一些常用的时间日期格式化符号: - %Y:四位数的年份表示(0000-9999) - %m:月份(01-12) - %d:月中的一天(01-31) - %H:24小时制小时数(00-23) - %M:分钟数(00-59) - %S:秒(00-59) %a:本地简化星期名称(例如:Mon) - %A:本地完整星期名称(例如:Monday) - %b:本地简化月份名称(例如:Jan) - %B:本地完整的月份名称(例如:January) - %p:本地AM或PM的等价符(例如:AM) - %I:12小时制小时数(01-12) - %f:微秒(000000-999999) - %z:UTC偏移量(例如:+0800) - %Z:时区名称(例如:CST) - %j:年内的一天(001-366) - %u:星期(1-7),其中星期一为星期的开始 - %w:星期(0-6),其中星期天为星期的开始 - %W:一年中的星期数(00-53),其中星期一为星期的开始 要在Python中进行日期格式化,可以使用datetime模块中的strftime()函数。例如,要将当前日期和时间格式化为"2022-01-01 12:30:45"的形式,可以使用以下代码: ```python import datetime now = datetime.datetime.now() formatted_date = now.strftime("%Y-%m-%d %H:%M:%S") print(formatted_date) ``` 输出结果将是当前日期和时间的格式化字符串:"2022-01-01 12:30:45"。你可以根据需要选择合适的格式化符号来满足你的需求。<span class="em">1</span> #### 引用[.reference_title] - *1* [Python 格式化日期](https://blog.csdn.net/weixin_38477351/article/details/103701950)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值