本章介绍python最具代表性的的时间日期库——datetime。同样道理,大家可以更改电脑日期 时间去试验更多的函数,亲自实践会有不错的效果。
目录
1. datetime.date
1.1 datetime.date(year,month,day)
1.1.1 datetime.date格式重要属性
1.2 datetime.date.fromtimestamp(timestamp)
1.3 datetime.date.today()
2. datetime.time
2.1 datetime.time(hour,minute,second,millisecond)
2.1.1 datetime.time格式重要属性
3. datetime.datetime
3.1 datetime.datetime(year, month, day, hour, minute, second,microsecond)
3.1.1 datetime.datetime格式重要属性
3.2 datetime.datetime.now()
3.3 datetime.datetime.today()
3.4 datetime.datetime.fromtimestamp(timestamp)
3.5 datetime.datetime.utcnow()
3.6 datetime.datetime.utcfromtimestamp(timestamp)
3.7 datetime.datetime.combine(date,time)
3.8 datetime.datetime.timestamp(dt)
3.9 datetime.datetime.strptime(string,format)
3.10 datetime.timedelta(weeks,days,hours,minutes,seconds,milliseconds,microseconds)
3.11 时间差(时间增量的产生)
结尾
获取某天日期,返回日期格式。
import datetime
a = datetime.date(2023,2,19)
print(a)
print(type(a))
今天为2023年4月20日。该函数下还能继续取 “值” ,主要有下面10个:
a.year | 提取年。 输出2023,类型为int。 |
a.month | 提取月。输出2,类型为int。 |
a.day | 提取日。输出19,类型为int。 |
a.isoformat() | 返回该日期的字符串。输出2023-02-19。 |
a.replace(a.year,7,a.day) | 替换日期,把月替换成7月。 |
a.isoweekday() | 返回iso星期几。Monday=1。 |
a.weekday() | 返回假星期几。Monday=0。 |
a.strftime('%Y/%m/%d') | 返回该日期的字符串。输出2023-02-19,类型为str。假如不需要日,把/%d去掉即可。中间分隔支持任意英文字符,如 / ,但不支持中文。 |
a.timetuple() | 结构化日期,返回日期时间元组。包括 年月日时分秒 假星期 年日数 夏令时。 |
a.toordinal() | 返回公历序数。即从公历开始算,是第几日。 |
datetime.date格式都可以使用表1这些函数去提取属性。
从时间戳获取日期。
a = datetime.date.fromtimestamp(1681925739)
print(a)
print(type(a))
时间戳可以用time时间库 time.time()获得。时间戳的概念我在上一篇讲过,也不是一两句话可以讲得明白的,但还是需要理解它。建议朋友们翻看上一篇去了解一下时间戳,它一个非常有意思和有危机感的东西。
获取今天的日期。
a = datetime.date.today()
print(a)
print(type(a))
获取时间。返回时间格式。
a = datetime.time(12,3,56,888888)
print(a)
print(type(a))
类似,datetime.time格式也可以往下 “取值” ,主要有以下7个:
a.hour | 提取时。输出12,类型int。 |
a.minute | 提取分。输出3,类型int。 |
a.second | 提取秒。输出56,类型int。 |
a.microsecond | 提取毫秒。输出888888,类型int。 |
a.isoformat() | 返回该时间的字符串。输出12:03:56.888888。 |
a.replace(second=44) | 把秒替换成44,返回格式依旧datetime.time |
a.strftime('%H:%M:%S') | 格式化时间。输出指定格式字符串。 |
datetime.time格式都可以使用表2这些函数去提取属性。
获取某天日期时间。至少传入year,month,day三个参数。
a = datetime.datetime(2022,5,14,12,6,37,888888)
print(a)
print(type(a))
类似,datetime.time格式也可以往下 “取值” ,主要有以下16个:
a.date() | 提取日期。输出2022-05-14,类型datetime.date |
a.time() | 提取时间。输出12:06:37.888888,类型datetime.time |
a.year | 提取年。 输出2022,类型为int。 |
a.month | 提取月。输出5,类型为int。 |
a.day | 提取日。输出14,类型为int。 |
a.hour | 提取时。输出12,类型int。 |
a.minute | 提取分。输出6,类型int。 |
a.second | 提取秒。输出37,类型int。 |
a.microsecond | 提取毫秒。输出888888,类型int。 |
a.timestamp() | 提取时间戳。 |
a.timetuple() | 返回日期时间元组。 |
a.isoweekday() | 返回iso星期几。Monday=1。 |
a.weekday() | 返回假星期几。Monday=0。 |
a.replace(month=2) | 把月替换成2,返回格式依旧datetime.datetime |
a.strftime('%Y/%m/%d %H:%M:%S:%f') | 格式化日期时间。输出指定格式字符串。中间分隔支持任意英文字符,如 / : ,但不支持中文。 |
a.toordinal() | 返回公历序数。即从公历开始算,是第几日。 |
datetime.datetime格式都可以使用表3这些函数提取属性。
获得现在的日期时间。
a = datetime.datetime.now()
print(a)
print(type(a))
获得现在的日期时间。和3.2的datetime.datetime.now()一模一样。
a = datetime.datetime.today()
print(a)
print(type(a))
从时间戳获得日期时间。
a = datetime.datetime.fromtimestamp(1681969157)
print(a)
print(type(a))
获得现在的格林尼治时间。
a = datetime.datetime.utcnow()
print(a)
print(type(a))
从时间戳获得格林尼治时间。
a = datetime.datetime.utcfromtimestamp(time.time())
print(a)
print(type(a))
格林尼治时间为中国时间-8小时。关于时间戳和时区的描述,在 “time” 篇有详细的介绍。
通过连接日期和时间生成日期时间。
d = datetime.date.today()
t = datetime.time(12,23,45)
a = datetime.datetime.combine(d,t)
print(a)
获取时间戳。和 dt.timestamp()一样。
dt = datetime.datetime.now()
a = datetime.datetime.timestamp(dt)
print(a)
把字符串类型转换成日期时间。
dt = '2022年10月13日01时16分31秒'
a = datetime.datetime.strptime(dt,'%Y年%m月%d日%H时%M分%S秒')
print(a)
print(type(a))
时间增量,可作时间的加减。参数已帮大家按大小顺序排好啦!1秒=1000毫秒,1毫秒=1000微秒。
delta = datetime.timedelta(days=5,minutes=23,seconds=39)
print(delta)
print(type(delta))
格式为datetime.timedelta。马上体验一下它的功能:
a = datetime.datetime(2023,4,18,15,16,20)
print(a)
delta = datetime.timedelta(days=5,minutes=23,seconds=37)
b = a + delta
print(b)
对时间a进行增量(加法)后,得到了时间b,也可进行减法,常用于对某日期时间进行加减。不过目前的缺点是只有 <周数> <天数> <小时> <分> <秒> <毫秒> 和 <微秒>。
可以直接对两个时间进行减法,从而产生时间增量 timedelta。时间增量可以为负,也可以为正。如算我国时间与格林尼治的时间差:
a = datetime.datetime.now()
b = datetime.datetime.utcnow()
print(a - b)
print(b - a)
print(type(a - b))
可知我国时间比英国格林尼治早8小时。当天我们在0点时,格林尼治在前一天的16:00。
个人觉得datetime库是python最好用的日期时间处理库,提醒一下,那三个表格内容非常重要,要好好掌握。