写点什么

python 小知识 -python 时间操作

作者:AIWeker
  • 2022-11-16
    福建
  • 本文字数:1612 字

    阅读完需:约 5 分钟

python小知识-python时间操作

时间操作是开发过程中必备的知识点,这里分享日常常用的时间操作方式


python 中时间的库有 time 和 datetime,pandas 也有提供相应的时间处理函数。


时间操作可以总结为:


  • 时间戳操作,时间字符格式转换为时间戳,便于计算和存储

  • 时间格式化,一般是时间戳转换为可读的时间格式如 yyyy-mm-dd HH:MM:SS

  • 时间的计算:时间的加减

  • 获取时间的属性:如周,月,年等属性信息


1. 时间戳操作


import datetimeimport time
# 字符 <-> datetime <-> timestampstr_datetime = '2021-03-02 15:54:03'
# datetime.datetime(2021, 3, 2, 15, 54, 3)cls_datetime = datetime.datetime.strptime(str_datetime, '%Y-%m-%d %H:%M:%S')
# 1614671643stamp_datetime = int(cls_datetime.timestamp())print("ts:", stamp_datetime)print("datetime:", cls_datetime)
# ts: 1614671643# datetime: 2021-03-02 15:54:03
复制代码


上述过程可以分解为:


  • datetime 库提供了 strptime 方法将字符串以一定的时间格式如'%Y-%m-%d %H:%M:%S'转换为 datetime 格式

  • 通过 datetime 的timestamp()转换为时间戳


字符转换为时间戳,主要用途有:


  • 以整形格式,存储或者作为索引,更节省空间

  • 以整形的方式进行时间操作,比如前一天就是减去 86400


2.时间格式化


那时间戳整形如何转换为可视的时间格式呢?


import datetimeimport time
stamp_datetime = 1614671643# datetime.datetime(2021, 3, 2, 15, 54, 3)cls_datetime_2 = datetime.datetime.fromtimestamp(stamp_datetime)print(cls_datetime_2)# datetime.datetime(2021, 3, 2, 15, 54, 3)
str_datetime2 = datetime.datetime.strftime(cls_datetime_2, '%Y-%m-%d %H:%M:%S')str_datetime2# '2021-03-02 15:54:03'
复制代码


从上面例子可知, 通过 datetime 的 strftime 函数将 datetime 格式的转换为指定格式的字符输出。


当然必须通过 fromtimestamp 转换为 datetime 类型


从上面可以,要完成字符和时间戳时间的相互转换,都必须转换为中间格式 datetime 进行过渡。


3.时间的计算


时间计算也是时间操作最常见的操作,有两种方法:


  • 一种是: 转换为时间戳,直接进行加减操作,有需要转换为字符时,通过 datetime 格式中间进行过渡

  • 另一种是:通过 datetime 提供 timedelta 方法,实现在 datetime 格式下加减



from datetime
delta = datetime.timedelta( days=50, seconds=27, microseconds=10, milliseconds=29000, minutes=5, hours=8, weeks=2)
new_date = datetime.datetime.now() - datetime.timedelta(days=1)
print(new_date)# datetime.datetime(2022, 8, 16, 22, 8, 23, 644338)
复制代码


从上可知,timedelta 提供从周,天,小时,分,秒,微秒的计量单位,通过 datetime-timedelta 来实现时间的加减,需要的话可以转换为时间戳和字符。


顺便普及下,类别之间是怎么做加减的呢?python 提供了内部方法__sub____add__只要实现这两个方法就可以了。


获取时间的属性


datetime 格式提供周,天,小时,分,秒等相关的时间属性,以及星期几的信息如


# 属性 2021, 3, 2, 15, 54, 3, 1print(cls_datetime_2.year, cls_datetime_2.month, cls_datetime_2.day,  cls_datetime_2.hour, cls_datetime_2.minute, cls_datetime_2.second, cls_datetime_2.weekday())
# time.struct_time(tm_year=2021, tm_mon=3, tm_mday=2, tm_hour=15, tm_min=54, tm_sec=3, tm_wday=1, tm_yday=61, tm_isdst=-1)cls_datetime_2.timetuple()
复制代码


4. pandas 中时间处理

pandas 中通过 Timestamp 方式提供了时间戳和字符时间之间转换,参考如下:


import pandas as pd​pd.Timestamp(1614499233, unit='s',tz='Asia/Shanghai')pd.Timestamp('2021-03-19', tz='Asia/Shanghai')pd.Timestamp(1614499233, unit='s', tz='Asia/Shanghai').strftime('%Y-%m-%d')pd.Timestamp('2021-03-19', tz='Asia/Shanghai').timestamp()
复制代码


发布于: 刚刚阅读数: 3
用户头像

AIWeker

关注

InfoQ签约作者 / 公众号:人工智能微客 2019-11-21 加入

人工智能微客(aiweker)长期跟踪和分享人工智能前沿技术、应用、领域知识,不定期的发布相关产品和应用,欢迎关注和转发

评论

发布
暂无评论
python小知识-python时间操作_Python_AIWeker_InfoQ写作社区