Python 日期和时间函数(三)
本篇在Python日期和时间函数(一)和(二)的基础上,继续讲解Python日期和时间函数的知识。
三、使用 datetime模块
在Python程序中,datetime是一个使用面向对象编程设计的模块,可以在 Python 软件
项目中使用日期和时间。相比于time模块,datetime模块的接口更加直观、更加容易被调用。
在模块datetime中定义了两个常量: datetime.MINYEAR和 datetime.MAXYEAR,分别
表示 datetime 所能表示的最小、最大年份。其中,MINYEAR=1, MAXYEAR = 9999。
在模块datetime中定义了如下表所示的类。
类名称 | 描述 |
---|---|
datetime.date | 表示日期的类,常用的属性有year,month和day |
datetime.time | 表示时间的类,常用的属性有 hour、 minute、second 和 microsecond |
datetime.datetime | 表示日期时间 |
datetime.timedelta | 表示时间间隔,即两个时间点之间的长度 |
datetime.tzinfo | 时区有关的相关信息 |
注意:上面列出的类型的对象都是不可变(immutable)的。
1.类 date
类date表示一个日期、曰期由年、月、日组成,其构造函数如下所示:
class datetime.date(year,month,day)
● year的范围是[MINYEAR,MAXYEAR],即[1,9999]。
● month的范围是[1,12]。月份是从1开始的,不是从0开始的。
● day的最大值根据给定的year, month参数来决定,例如闰年2月份有29天。
在类 date 中定义了加下表所示的常用方法和属性。
方法和属性 | 描述 |
---|---|
date.max、date.min | date对象所能表示的最大、最小日期 |
date.resolution | date对象表示日期的最小单位,这里是天 |
date.today() | 返回一个表示当前本地日期的date对象 |
date.fromtimestamp(timestamp) | 根据给定的时间戳,返回一个date对象 |
datetime.fromordinal(ordinal) | 将 Gregorian日历时间转换为 date对象(Gregorian是一种日历表示方法,类似于我国的农历,欧美国家使用比较多) |
例如在下面的实例文件中,演示了类date 实现日期操作的过程:
from datetime import *
import time
print('date.max:', date.max)
print('date.min:', date.min)
print('date.today():',date.today())
print('date.fromtimestamp():',date.fromtimestamp (time.time()))
执行后会输出:
在类date中提供了如下表所示的常用实例方法和属性。
方法和属性 | 描述 |
---|---|
date.year、date.month、date.day | 年、月、日 |
date.replace(year, month, day) | 生成一个新的日期对象,用参数指定的年、月、日代替原有对象中的属性。(原有对象仍保持不变) |
date.timetuple() | 返回日期对应的time.struct_time对象 |
date.toordinal() | 返回日期对应的 Gregorian Calendar日期 |
date.weekday() | 返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推 |
data.isoweekday() | 返回weekday,如果是星期一,返回1;如果是星期2,返回2,返回2,以此类推 |
date.isocalendar() | 返回格式如(year, month,day)的元组 |
date.isoformat() | 返回格式如‘YYYY-MM-DD’ 的字符串 |
date.strftime(fmt) | 自定义格式化字符串 |
例如在下面的实例文件中,演示了使用类date的实例方法和属性实现日期操作的过程:
from datetime import *
import time
now = date(2022,7,30 )
tomorrow = now.replace(day = 31)
print('now:',now,'tomorrowe:',tomorrow)
print('timetuple():',now.timetuple())
print('weekday():',now.weekday())
print('isoweekday():',now.isoweekday())
print('isocalendar()):',now.isocalendar())
print('isoformat():',now.isoformat())
执行后会输出:
在Pytho程序中,类date还可以对某些日期操作进行重载,它允许我们对日期进行如下所示的操作:
date2 = date1 + timedelta #日期加上一个间隔,返回一个新的日期对象(timedelta将在下面介绍,表示时间间隔)
date2 = date1 - timedelta #日期隔去间隔,返回一个新的日期对象
timedelta = date1 - date2 #两个日期相减,返回一个的间间隔对象
date1 < date2 #两个日期进行比较
注意:当对日期进行操作时,需要防止日期超出它所能表示的范围。
2.类Time
在Python程序中,类time表示时间,由时、分、秒以及微秒组成。类time的构造函数如下所示:
Class datetime.time (hour[,minute[ ,second[,microsecond[,tzinfo] ] ] )
参数说明如下表所示:
参数名称 | 描述 |
---|---|
参数tzinfo | 表示时区信息 |
参数hour | 取值范围为[0, 24) |
参数minute | 取值范围为[0, 60) |
参数second | 取值范围为[0, 60) |
参数microsecond | 取值范围为[0, 1000000) |
类time中的常用属性如下所示:
● time.min、time.max: time 类所能表示的最小、最大时间。其中,time.min = time(0,0,0, 0),time.max = time(23, 59, 59, 999999)
● time.resolution: 时间的最小单位,这里是1微秒。
类time中常用的实例方法和属性如下表所示:
方法和属性 | 描述 |
---|---|
time.hour、time.minute、time.second、 time.microsecond | 时、分、秒、微秒 |
time.tzinfo | 时区信息 |
time.replace([ hour[, minute[ , second[,microsecond[ ,tzinfo] ] ] ] ] ) | 创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性(原有对象仍保持不变) |
time.isoformat() | 返回型如“HH:MM:SS”格式的字符串表示 |
time.strftime(fmt) | 返回自定义格式化字符串 |
例如在下面的实例文件中,演示了使用类 time实现日期操作的过程。
from datetime import *
tm = time (20, 54,10)
print('tm: ',tm)
print('hour: %d,minute: %d,second: %d,microsecond: %d' % (tm.hour,tm.minute,tm.second,tm.microsecond))
tml = tm.replace(hour = 21)
print('tml:', tml)
print('isoformat():', tm.isoformat())
执行后会输出:
3.类datetime
在Python程序中,类 datetime是 date与time的结合体,包含date与time的所有功能信息。类datetime 的构造函数如下所示:
datetime.datetime(year, month, day[, hour[, minute[, second[,microsecond[,tzinfo] ] ] ] ] )
类 datetime各个参数的含义与 date和 time构造函数中的一样,读者需要注意参数值的取值范围。
类 datetime中定义的常用类属性和方法如下表所示:
方法和属性 | 描述 |
---|---|
datetime.min、datetime.max | atetime所能表示的最小值与最大值 |
datetime.resolution | datetime的最小单位 |
datetime.today() | 返回一个表示当前本地时间的 datetime对象 |
datetime.now([tz]) | 返回一个表示当前本地时间的 datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间 |
datetime.utcnow() | 返回一个当前utc时间的 datetime对象 |
datetime.fromtimestamp(timestamp[,tz]) | 根据时间戳创建一个datetime对象,参数tz指定时区信息 |
datetime.utcfromtimestamp(timestamp) | 根据时间戳创建一个 datetime对象 |
datetime.combine(date, time) | 根据date和time,创建一个datetime 对象 |
datetim.strptime(date_string, format) | 将格式字符串转换为datetime对象 |
例如在下面的实例文件中,演示了使用类datetime实现日期操作的过程:
from datetime import *
import time
print('datetime.max:', datetime.max)
print('datetime.min:', datetime.min)
print('datetime.resolution:',datetime.resolution)
print('today():',datetime.today())
print('now():',datetime.now())
print('utcnowl():',datetime.utcnow())
print('fromtimestamp(tmstmp):',datetime.fromtimestamp(time.time()) )
print('utcfromtimestamp(tmstmp):',datetime.utcfromtimestamp(time.time()))
执行后会输出:
因为在类datetime中提供的实例方法与属性和date和time中的类似,所以在此不再讲解这些相似的方法与属性。