Python基础教程

003_datetime日期时间模块

datetime日期时间模块

日期时间指的是时间与日期的合体。其实上一讲的time模块已经能拿到时间与日期数据了。这一讲中的datetime模块功能更强大,相当于是对time模块的 扩展。然而,datetime并不能完全取代time,它们之间功能有重复的地方,也有独有的部分。比如time中能获取时间戳,还有sleep功能,而datetime功能偏向不同。

datetime模块的主要内容

datetime模块主要包含下面几个内容

  • date 日期类
  • time 时间类
  • datetime 日期时间类
  • timedelta 时间间隔类

先来查看datetime模块内容

import datetime

print(dir(datetime))

显示结果如下

C:UsershccmaAnaconda3python.exe E:/wkp01/p00/test01/atestpkg/t42.py
['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time', 'timedelta', 'timezone', 'tzinfo']

Process finished with exit code 0

日期类

示例如下

import datetime

myday=datetime.date.today()
print(myday)
print(myday.year)
print(myday.month)
print(myday.day)

运行结果

C:UsershccmaAnaconda3python.exe E:/wkp01/p00/test01/atestpkg/t42.py
2021-02-23
2021
2
23

Process finished with exit code 0

时间类

示例如下

import datetime

mytime=datetime.time(11,20,30,888)
print(mytime)
print(mytime.hour)
print(mytime.minute)
print(mytime.second)
print(mytime.microsecond)

运行结果

C:UsershccmaAnaconda3python.exe E:/wkp01/p00/test01/atestpkg/t42.py
11:20:30.000888
11
20
30
888

Process finished with exit code 0

日期时间类

datetime类其实是可以看做是date类和time类的合体。

import datetime

mydt=datetime.datetime.now()
print(mydt)         # 日期与时间
print(mydt.date())  # 只有日期
print(mydt.time())  # 只有时间

print(mydt.year)
print(mydt.month)
print(mydt.day)
print(mydt.hour)
print(mydt.minute)
print(mydt.second)

结果如下

C:UsershccmaAnaconda3python.exe E:/wkp01/p00/test01/atestpkg/t42.py
2021-02-23 11:24:40.818385
2021-02-23
11:24:40.818385
2021
2
23
11
24
40

Process finished with exit code 0

datetime类与time模块都能获取日期和时间内容,有部分功能相似。

strftime 将datetime对象转换成指定格式的字符串

strptime将字符串转换成datetime类型数据

fromtimestamp可以将时间戳转换成datetime类型

timedelta类

示例如下

from datetime import datetime, timedelta

now = datetime.now()
print(now)
later = now + timedelta(hours=1)
print(later)

运行结果

C:UsershccmaAnaconda3python.exe E:/wkp01/p00/test01/atestpkg/t42.py
2021-02-23 11:33:12.156020
2021-02-23 12:33:12.156020

Process finished with exit code 0

时间的计算

时间可以直接加减计算

示例如下

from datetime import datetime

dt1 = datetime(year=2021, month=2, day=21, hour=10, minute=30, second=10)
dt2 = datetime(year=2021, month=2, day=23, hour=11, minute=36, second=45)

mytimedelta = dt2 - dt1
print(type(mytimedelta))
print(mytimedelta)
print(mytimedelta.days)
print(mytimedelta.seconds)

运行结果

C:UsershccmaAnaconda3python.exe E:/wkp01/p00/test01/atestpkg/t42.py
<class 'datetime.timedelta'>
2 days, 1:06:35
2
3995

Process finished with exit code 0

拓展

更多内容可以参考官方手册

https://docs.python.org/zh-cn/3/library/datetime.html

这篇文章对您有用吗?

我们要如何帮助您?