首页 后端 Python 正文

【小技巧】Python 时间戳转换日期方法

【小技巧】Python 时间戳转换日期方法  第1张

前言

时间在我们工作中随处,最常见的在于我们时钟⏰、手表⌚、手机?、电脑?等,再以不同的形式和风格展示在我们的眼睛里。

时间格式有很多中,有适合人类阅读的年月日时分秒(Y-m-d H:M:S),也有机器存储的时间戳

什么是时间戳?

时间戳是一组字符或者编码信息的序列,将发生的事件数据进行唯一标识,保障数据可验证性和完整性,通常用于客户-服务端进行通信、log日志打印等。

在我们需要电子合同、保密文档则需要一个更加权威的时间戳服务来进行标识,保障文件的安全性。

时间戳作用

  • 防篡改:保障文件所带的时间戳是经过MD5值加密传输的,防止在传输的过程中被他人篡改

  • 防复用:当客户端和服务器端不在同一个时区时,UTC时间戳就能帮助他人进行复用

时间戳计算方式

  • 起始时间:Unix元年:1970/1/1 0:0:0

  • 时间戳计算方式:

【小技巧】Python 时间戳转换日期方法  第2张

  • 时间戳转换成时间:则以除余的方式进行计算的

需求场景

当我们工作场景中查看设备日志或指令查看服务器日期,日期是时间戳形式展示的,这时候我们需要把时间戳转换成我们常用的时间格式(年/月/日等)

本期,我们将使用Python来对时间戳转换时间,看看有哪些方法吧,let's go✈️

1. 使用time.localtime()方法

Python 内置库 time.localtime([sec])方法来对时间戳进行转换

  • 当 sec 为 none 时,默认返回当地时间

  • sec 单位为秒,以Unix纪元时间1970/1/1开始计算

? time.localtime()是根据所在当地时区进行转换的

import time

def timestamp_convert_localdate(timestamp,time_format="%Y/%m/%d %H:%M:%S"):
    # 按照当前设备时区来进行转换,比如当前北京时间UTC+8
    timeArray = time.localtime(timestamp)
    styleTime = time.strftime(str(time_format), timeArray)
    return styleTime

调用timestamp_convert_localdate方法:

print("本地北京时间:",timestamp_convert_localdate(1632737190))

【小技巧】Python 时间戳转换日期方法  第3张

2. 使用time.gmtime()方法

Python 内置库 time 还提供 time.gmtime([sec]) 方法对时间戳来转成时间

  • 当 sec 为 none 时,默认返回当前时间

  • sec 单位为秒,以Unix纪元时间1970/1/1开始计算

? time.gmtime()是根据英国格林威治平时(零时区)来转换的

import time

def timestamp_convert_gmtdate(timestamp,time_format="%Y/%m/%d %H:%M:%S"):
    # 按照当前设备时区来进行转换,比如当前北京时间UTC+8
    timeArray = time.gmtime(timestamp)
    styleTime = time.strftime(str(time_format), timeArray)
    return styleTime

调用timestamp_convert_gmtdate()方法:

print("格林治时间:",timestamp_convert_gmtdate(1632737190))

【小技巧】Python 时间戳转换日期方法  第4张

3. 使用datetime.fromtimestamp()方法

通过 time 库提供的两个方法,能方便我们快速将时间戳转换成时间。

但是,我们发现,前面两种方法都没有办法指定特定时区并转换成当地的时间

Python 内置库 datetime 库 提供 datetime.fromtimestamp(timestamp,tz)方法,转换指定时区的当地时间

  • 当 tz 为 None 时, 时间戳会被转换为平台所在的本地日期和时间

  • 当 tz 不为 None 时,tz 必须为tzinfo实例对象(我们可以使用timezone来表示UTC偏移量)

import datetime

def timestamp_convert_date(timestamp, timezone, time_format="%Y/%m/%d %H:%M:%S"):
    # 时区偏移量,timezone单位秒
    offset = int(timezone) / 3600
    td = datetime.timedelta(hours=offset)
    tz = datetime.timezone(td)
    timeArray = datetime.datetime.fromtimestamp(timestamp, tz)
    styleTime = timeArray.strftime(str(time_format))

    return styleTime

调用timestamp_convert_date方法:

print("UTC +3:",timestamp_convert_date(1632737190,10800000))

【小技巧】Python 时间戳转换日期方法  第5张

?: 使用此方法不足点:无法准确计算出指定时区夏令时段的时间

4. 使用pytz库fromtimestamp方法

我们使用datetime.fromtimestamp()可以满足我们大部分情况,但是为了准确获得当地实际时间(包括是否处于夏令时、冬令时时段)

Python 第三方库 pytz 为我们提供了可以直接指定时区代码来准确转换成当地的时间fromtimestamp()方法

  • import install pytz 安装pytz第三方库

  • pytz.timezone(tz) 来获取tzinfo对象

  • pytz.country_timezones('country_code') 通过国家代码如cn来获取对应国家时区列表

  • pytz.alltimezones、pytz。common_timezones 两个属性来查看有哪些时区

import pytz

def timestamp_convert_pytzdate(timestamp,tzone,timefromat="%Y/%m/%d %H:%M:%S"):

    tz = pytz.timezone(tzone)

    dt = pytz.datetime.datetime.fromtimestamp(timestamp,tz)

    styleTime = dt.strftime(str(timefromat))

    return styleTime

调用timestamp_convert_pytzdate方法:

print("俄罗斯时间:",timestamp_convert_pytzdate(1632737190,"Europe/Moscow"))

【小技巧】Python 时间戳转换日期方法  第6张

?: pytz 为我们提供跨时区查询,并且解决了夏令时时段、夏令时结束时断,时间模糊的问题

总结

本期,在工作场景中遇到时间戳转换时间,发现Python 提供方法函数,收益匪浅。

  • time 库提供 localtime、gmttime方法

  • datetime 库提供 fromtimestamp 方法

  • pytz 库提供 pytz.timezone 转换成tzinfo对象

我们可以根据工作中使用场景选择使用,便于我们工作更加高效和便捷~

以上是本期内容,欢迎大佬评论点赞指正,我们下次见♥️

打赏
海报

本文转载自互联网,旨在分享有价值的内容,文章如有侵权请联系删除,部分文章如未署名作者来源请联系我们及时备注,感谢您的支持。

转载请注明本文地址:https://www.shouxicto.com/article/775.html

-->

相关推荐

python编程网页版(手机python30编程软件)

python编程网页版(手机python30编程软件)

当我们工作场景中查看设备日志或指令查看服务器日期,日期是时间戳形式展示的,这时候我们需要把时间戳转换成我们常用的时间格式(年/月/日等)...

Python 2023.07.08 0 1152

python学会了能干啥(python能干什么)

python学会了能干啥(python能干什么)

当我们工作场景中查看设备日志或指令查看服务器日期,日期是时间戳形式展示的,这时候我们需要把时间戳转换成我们常用的时间格式(年/月/日等)...

Python 2023.07.07 0 1126

python3ide手机版?

python3ide手机版?

当我们工作场景中查看设备日志或指令查看服务器日期,日期是时间戳形式展示的,这时候我们需要把时间戳转换成我们常用的时间格式(年/月/日等)...

Python 2023.07.07 0 1163

支付宝
微信
赞助本站