乐趣区

关于python:图解python-时间和日期处理

作者:韩信子 @ShowMeAI
教程地址:http://www.showmeai.tech/tuto…
本文地址:http://www.showmeai.tech/article-detail/90
申明:版权所有,转载请分割平台与作者并注明出处

Python 日期与工夫

在 Python 的开发过程中,咱们常常要解决工夫类型的数据,Python 内置了 timedatetime 等规范库,帮忙咱们对工夫型进行解决,在本节内容中,咱们将围绕这两个规范库,具体开展介绍罕用办法。

1.time 模块

在 Python 中,time 模块次要用于将工夫戳转换为具体的日期工夫,但time 模块示意日期工夫的对象构造简略,不适宜进行简单的操作和示意。

(1)模块用法

time 模块中只有 time.struct_time 一个类:

struct_time 是一个转换秒数失去的结构化的工夫对象,能够通过下标或属性名称获取对象的年月日时分秒等属性。调用 gmtime()localtime()strptime() 等办法可失去 struct_time 实例。

>>> st = time.localtime()
>>> st
time.struct_time(tm_year=2021, tm_mon=10, tm_mday=27, tm_hour=19, tm_min=27, tm_sec=31, tm_wday=2, tm_yday=300, tm_isdst=0)
>>> st.tm_mon
10
>>> st[1]
10
# 在 struct_time 和字符串之间进行转换
>>> time.strftime('%H:%M:%S')
'19:10:37'

>>> time.strptime("30 Nov 00", "%d %b %y")   
time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0,
                 tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)
import time

# 格式化成 2021-10-27 19:56:36 模式
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

# 格式化成 Sat Mar 28 22:24:24 2016 模式
print(time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()))
 
# 将格局字符串转换为工夫戳
a = "Wed Oct 27 19:56:36 2021"
print(time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y")))

2.datetime 模块

datetime 模块反对日期和工夫的运算,它提供了一些用于操作日期和工夫的类。该模块的绝大部分性能都围绕着以下 4 个类(以及另外两个对于时区的类)的办法和属性来实现。

(1)date类及用法

date类示意日期类型。

反对的操作符

  • 反对与另一 date 对象进行 ==<> 等比拟操作。
  • 反对与 timedelta 对象进行加减操作,后果仍然为 date 对象。
  • 反对与另一 date 对象进行相减操作,失去 timedelta 对象。
  • 反对哈希。

代码示例

# 传入日期对应的年月日参数,实例化 date 类
>>> from datetime import date
>>> date(2021, 10, 29)
datetime.date(2021, 10, 29)

# 能够通过工夫戳取得工夫
>>> date.fromtimestamp(time.time())
datetime.date(2021, 10, 29)

>>> d2 = date(2021, 10, 29)
>>> d1 = date(2021, 10, 27)
>>> d2 > d1
True
>>> d2 - d1
datetime.timedelta(days=2)

(2)time类及用法

time类示意工夫(时分秒)类型。

反对的操作符

  • 反对与另一 time 对象进行 ==<> 等比拟操作。
  • 反对哈希。

代码示例

>>> from datetime import time
>>> t = time.fromisoformat('19:32:10')
>>> t.strftime('%Hh %Mm %Ss')
'19h 32m 10s'

>>> t = time(hour=19, minute=27, second=55)
>>> t.isoformat()
'19:27:55'

(3)datetime类及用法

datetime类示意蕴含日期时候的工夫类型,能够视作 datetime 实例的组合体,因而同时具备了两种对象的大部分办法和属性。

反对的操作符

  • datetime 反对与 date 进行相等比拟,但后果肯定为 False,除此之外只反对与另一 datetime 对象执行 ==<> 等比拟操作。
  • 反对与 timedelta 相加,后果为 datetime;反对与 timedelta 对象进行加减,后果仍然为 datetime 对象,与另一 datetime 对象进行相减,失去 timedelta 对象。
  • 同样反对哈希。

代码示例

>>> from datetime import datetime
>>> datetime(year=2021, month=10, day=29)
datetime.datetime(2021, 10, 29, 0, 0)

>>> datetime.now()
datetime.datetime(2021, 10, 29, 14, 51, 18, 731235)

>>> datetime.fromisoformat('2021-10-29 16:09:32')
datetime.datetime(2021, 10, 29, 16, 9, 32)

>>> dt = datetime.now()
>>> dt.timestamp()
1635317544.682565

>>> dt.date()
datetime.date(2021, 10, 29)

(4)timedelta

timedelta类对象示意两个 datetime 对象之间的差别。

反对的操作符

  • 只反对与另一 timedelta 进行比拟,进行 ==<> 等比拟操作。
  • timedelta 对象反对反对加减操作,datetimetimedelta 相加或相减依然返回 datetime
  • timedelta 还反对乘除模除等操作符。
  • 反对哈希。
  • timedelta 是有符号的,反对 abs() 函数,可返回两个 datetime 之间的相对距离。

代码示例

>>> from datetime import timedelta
>>> timedelta(days=2)
datetime.timedelta(days=2)

>>> dt1 = datetime.now()
>>> dt2 = datetime.now()
>>> dt2 -dt1
datetime.timedelta(seconds=4, microseconds=476390)

>>> d = timedelta(minutes=3, seconds=35)
>>> d.total_seconds()
215.0

材料与代码下载

本教程系列的代码能够在 ShowMeAI 对应的 github 中下载,可本地 python 环境运行,能迷信上网的宝宝也能够间接借助 google colab 一键运行与交互操作学习哦!

本教程系列波及的 Python 速查表能够在以下地址下载获取:

  • Python 速查表

拓展参考资料

  • Python 教程—Python3 文档
  • Python 教程 - 廖雪峰的官方网站

ShowMeAI 相干文章举荐

  • python 介绍
  • python 装置与环境配置
  • python 根底语法
  • python 根底数据类型
  • python 运算符
  • python 条件管制与 if 语句
  • python 循环语句
  • python while 循环
  • python for 循环
  • python break 语句
  • python continue 语句
  • python pass 语句
  • python 字符串及操作
  • python 列表
  • python 元组
  • python 字典
  • python 汇合
  • python 函数
  • python 迭代器与生成器
  • python 数据结构
  • python 模块
  • python 文件读写
  • python 文件与目录操作
  • python 谬误与异样解决
  • python 面向对象编程
  • python 命名空间与作用域
  • python 工夫和日期

ShowMeAI 系列教程举荐

  • 图解 Python 编程:从入门到精通系列教程
  • 图解数据分析:从入门到精通系列教程
  • 图解 AI 数学根底:从入门到精通系列教程
  • 图解大数据技术:从入门到精通系列教程

退出移动版