本章介绍python最具代表性的的时间日期库——datetime。同样道理,大家可以更改电脑日期 时间去试验更多的函数,亲自实践会有不错的效果。
目录
1. datetime.date
1.1 datetime.date(year,month,day)
获取某天日期,返回日期格式。
import datetime
a = datetime.date(2023,2,19)
print(a)
print(type(a))
今天为2023年4月20日。该函数下还能继续取 “值” ,主要有下面10个:
1.1.1 datetime.date格式重要属性
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这些函数去提取属性。
1.2 datetime.date.fromtimestamp(timestamp)
从时间戳获取日期。
a = datetime.date.fromtimestamp(1681925739)
print(a)
print(type(a))
时间戳可以用time时间库 time.time()获得。时间戳的概念我在上一篇讲过,也不是一两句话可以讲得明白的,但还是需要理解它。建议朋友们翻看上一篇去了解一下时间戳,它一个非常有意思和有危机感的东西。
1.3 datetime.date.today()
获取今天的日期。
a = datetime.date.today()
print(a)
print(type(a))
2. datetime.time
2.1 datetime.time(hour,minute,second,millisecond)
获取时间。返回时间格式。
a = datetime.time(12,3,56,888888)
print(a)
print(type(a))
类似,datetime.time格式也可以往下 “取值” ,主要有以下7个:
2.1.1 datetime.time格式重要属性
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这些函数去提取属性。
3. datetime.datetime
3.1 datetime.datetime(year, month, day, hour, minute, second,microsecond)
获取某天日期时间。至少传入year,month,day三个参数。
a = datetime.datetime(2022,5,14,12,6,37,888888)
print(a)
print(type(a))
类似,datetime.time格式也可以往下 “取值” ,主要有以下16个:
3.1.1 datetime.datetime格式重要属性
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这些函数提取属性。
3.2 datetime.datetime.now()
获得现在的日期时间。
a = datetime.datetime.now()
print(a)
print(type(a))
3.3 datetime.datetime.today()
获得现在的日期时间。和3.2的datetime.datetime.now()一模一样。
a = datetime.datetime.today()
print(a)
print(type(a))
3.4 datetime.datetime.fromtimestamp(timestamp)
从时间戳获得日期时间。
a = datetime.datetime.fromtimestamp(1681969157)
print(a)
print(type(a))
3.5 datetime.datetime.utcnow()
获得现在的格林尼治时间。
a = datetime.datetime.utcnow()
print(a)
print(type(a))
3.6 datetime.datetime.utcfromtimestamp(timestamp)
从时间戳获得格林尼治时间。
a = datetime.datetime.utcfromtimestamp(time.time())
print(a)
print(type(a))
格林尼治时间为中国时间-8小时。关于时间戳和时区的描述,在 “time” 篇有详细的介绍。
3.7 datetime.datetime.combine(date,time)
通过连接日期和时间生成日期时间。
d = datetime.date.today()
t = datetime.time(12,23,45)
a = datetime.datetime.combine(d,t)
print(a)
3.8 datetime.datetime.timestamp(dt)
获取时间戳。和 dt.timestamp()一样。
dt = datetime.datetime.now()
a = datetime.datetime.timestamp(dt)
print(a)
3.9 datetime.datetime.strptime(string,format)
把字符串类型转换成日期时间。
dt = '2022年10月13日01时16分31秒'
a = datetime.datetime.strptime(dt,'%Y年%m月%d日%H时%M分%S秒')
print(a)
print(type(a))
3.10 datetime.timedelta(weeks,days,hours,minutes,seconds,milliseconds,microseconds)
时间增量,可作时间的加减。参数已帮大家按大小顺序排好啦!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,也可进行减法,常用于对某日期时间进行加减。不过目前的缺点是只有 <周数> <天数> <小时> <分> <秒> <毫秒> 和 <微秒>。
3.11 时间差(时间增量的产生)
可以直接对两个时间进行减法,从而产生时间增量 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最好用的日期时间处理库,提醒一下,那三个表格内容非常重要,要好好掌握。
文章出处登录后可见!