Logo

郎哥编程

日期和时间类型

2021-02-23 226

Python提供了多种处理方式,用来处理日期和时间类型。

系统时间获取及转换

Python的time模块提供了时间的访问和转换函数,下面介绍time模块常用的函数,其它函数请参考Python官方文档。

在介绍time模块提供的函数之前,先来认识struct_time结构,该结构是个9元组,结构中的值可以通过索引和属性名称访问。

struct_time结构表:

29.PNG

time模块常用函数概览表:

30.PNG

注释(1)

函数声明:

time()

函数返回当前系统时间,单位为秒,返回类型为浮点数,返回的系统时间是从 epoch 开始的秒数的时间值。

 epoch具体日期的处理取决于操作系统。在 Windows 和大多数 Unix 系统中,epoch 是 1970 年 1 月 1 日 00:00:00 (UTC),并且闰秒将不计入从 epoch 开始的秒数。

函数返回的秒数可以作为参数,传递给 localtime() 函数获得本地时间struct_time结构对象。

案例代码:

>>> import time
>>> sec = time.time()
>>> print(sec)
1597473905.0032325
>>>

注释(2)

函数声明:

localtime([secs])

返回secs的当地时间struct_time结构对象,secs是可选参数,若没有提供secs参数,函数则使用 time() 所返回当前时间。

案例代码:

>>> import time
>>> sec = time.time()
>>> print(sec)
1597473905.0032325
>>> t = time.localtime(sec)
>>> print(t)
time.struct_time(
tm_year=2020,
tm_mon=8, 
tm_mday=15, 
tm_hour=14, 
tm_min=45, 
tm_sec=5, 
tm_wday=5, 
tm_yday=228,
 tm_isdst=0
)
>>> # 通过索引或属性值访问struct_time结构对象的值
>>> print("当前时间为:%d:%d:%d" % (t.tm_year,t.tm_mon,t[2]))
当前时间为:2020:8:15
>>>

注释(3)

函数声明:

mktime(t)

这是 localtime() 的反函数,它的参数是 struct_time 或者完整的 9 元组,返回对应t的秒数。

案例代码:

>>> t = time.localtime()
>>> sec = time.mktime(t)
>>> print(sec)
1597474803.0
>>>

注释(4)

函数声明:

strftime(format[, t])

转换struct_time结构对象表示的时间到由 format 参数指定的字符串。如果未提供t,则使用由 localtime() 返回的当前时间,format 必须是一个字符串。

以下占位符可以写入 format 字符串中,写入的占位符将被struct_time结构对象对应的值替换。

格式字符串占位符表:

31.PNG

案例代码:

>>> import time
>>> t = time.localtime()
>>> fs = '%Y.%m.%d %H:%M:%S'
>>> print(time.strftime(fs,t))
2020.08.15 15:22:18
>>>

注释(5)

函数声明:

strptime(string[, format])

根据格式解析表示时间的字符串,返回当地时间struct_time结构对象。format 参数与strftime()函数的format参数使用相同的占位符。

案例代码:

>>> import time
>>> t = time.strptime("2020.08.15","%Y.%m.%d")
>>> print(t)
time.struct_time(
tm_year=2020, 
tm_mon=8, 
tm_mday=15, 
tm_hour=0, 
tm_min=0, 
tm_sec=0, 
tm_wday=5, 
tm_yday=228, 
tm_isdst=-1
)
>>>

注释(6)

函数声明:

asctime([t])

转换struct_time结构的时间到形式为:“Sun Jun 20 23:21:05 1993”的字符串。

案例代码:

>>> import time
>>> t = time.localtime()
>>> print(time.asctime(t))
Sat Aug 15 15:42:17 2020
>>>

注释(7)

thread_time()

返回当前线程的系统和用户CPU时间之和的值(单位秒),类型为浮点数。

案例代码:       

import time
# 定义一个空的循环函数
def fn_loop(n):
    for i in range(1,n):
        pass;
 
if __name__=="__main__":
 
    # 输出运行的时间(单位秒)
    print("循环开始:" + str(time.thread_time()))
    fn_loop(10000000)
    # 输出循环后运行的时间(单位秒)
    print("循环结束:" + str(time.thread_time()))

案例代码定义了一个空的循环函数,用于计算循环耗费的时间。在循环开始前输出程序已运行的时间,循环结束后,输出程序已运行的时间,两者时间的差值就是循环耗费的时间。

程序执行结果如下所示:

循环开始:0.140625

循环结束:0.296875

date对象

date 对象是date类的实例化,date类包含在datetime模块内,它主要处理公历的年、月、日。

下表列出了date对象的构造方法。

32.PNG

注释(1)

构造方法声明:

date(year, month, day)

返回一个date对象,参数为年、月、日。参数必须是在下面范围内的整数:

1<=year<=9999

1<=month<=12

1<=day<=給定年月对应的天数

若传入的参数不在上述范围内,引发ValueError 异常。

案例代码:

>>> import datetime
>>> #实例化date对象
>>> d = datetime.date(2020,8,16)
>>>输出变量d的类型
>>> type(d)
<class 'datetime.date'>
>>> print(d)
2020-08-16
>>>

注释(2)

构造方法声明:

datetime.today()

该构造方法是date类的静态方法,可以直接使用类名访问,该方法返回表示当前系统时间的 date 对象。

案例代码:

>>> import datetime
>>> d = datetime.date.today()
>>> print(d)
2020-08-17
>>>

date对象的主要属性如下表所示:

33.PNG

date对象的主要方法如下表所示:

34.PNG

注释(2)

方法声明:

timetuple()

返回当地时间struct_time结构对象。

案例代码:

>>> import datetime
>>> d = datetime.date(2020,8,16)
>>> print(d.timetuple())
time.struct_time(
tm_year=2020, 
tm_mon=8, 
tm_mday=16, 
tm_hour=0, 
tm_min=0, 
tm_sec=0, 
tm_wday=6, 
tm_yday=229, 
tm_isdst=-1)
>>>

注释(6)

方法声明:

strftime(format)

返回一个由显式格式字符串所指明的代表日期和时间的字符串,格式字符串占位符的完整列表参见前面的格式字符串占位符表。

案例代码:

>>> import datetime
>>> d = date(2020,8,16)
>>> print(d.strftime("%Y.%m.%d"))
2020.08.16
>>>

datetime对象

datetime对象描述了完整的日期和时间,方便开发人员编写处理时间的代码。

下表列出了datetime对象的构造方法。

35.PNG

注释(1)

构造方法声明:

datetime(
year, 
month, 
day,
hour=0, 
minute=0, 
second=0, 
microsecond=0, 
tzinfo=None, 
*,
 fold=0)

返回一个datetime对象,参数取值范围参见date对象和time对象的构造方法。

year, month, day参数必须传入,其它参数可以采用默认值。

案例代码:

>>> import datetime
>>> t = datetime.datetime(2020,8,17,13,20,35)
>>> print(t)
2020-08-17 13:20:35
>>>

注释(2)

构造方法声明:

datetiem.today()

该构造方法是datetime类的静态方法,可以直接使用类名访问,该方法返回表示当前系统时间的 datetime 对象。

案例代码:

>>> import datetime
>>> t = datetime.datetime.today()
>>> print(t)
2020-08-17 13:17:15.309852
>>>

注释(3)

构造方法声明:

datetiem.now()

该构造方法是datetime类的静态方法,可以直接使用类名访问,该方法返回表示当前系统时间的 date和time 对象。

案例代码:

>>> import datetime
>>>t = datetime.datetime.now()
>>>d = t.date()
>>> type(d)
<class 'datetime.date'>
>>>

datetime对象的主要属性如下表所示:

36.PNG

datetime对象的主要方法如下表所示:

37.PNG

注释(3)

方法声明:

timetuple()

该方法返回一个表示本地系统时间的struct_time结构对象。

案例代码:

>>> import datetime
>>> d = datetime.datetime.now()
>>> tt = d.timetuple()
>>> for it in tt:  
       print(it)

注释(4)

方法声明:

isoformat(sep='T', timespec='auto')

返回表示为下列 ISO 8601 格式之一的时间字符串:

YYYY-MM-DDTHH:MM:SS.ffffff,如果 microsecond 不为 0

YYYY-MM-DDTHH:MM:SS,如果 microsecond 为 0

案例代码:

>>> import datetiem
>>> t = datetime.datetime.now()
>>> print(t.isoformat())
2020-08-17T14:04:42.030807
>>>

注释(5)

方法声明:

ctime()

返回一个表示日期和时间的字符串。

案例代码:

>>> import datetiem
>>> t = datetime.datetime.now()
>>> print(t.ctime())
Mon Aug 17 14:04:42 2020
>>>

注释(6)

方法声明:

strftime(format)

返回一个由显式格式字符串所指明的代表日期和时间的字符串,格式字符串占位符的完整列表参见前面的格式字符串占位符表。

案例代码:

>>> import datetiem
>>> t = datetime.datetime.now()
>>> t.strftime("%A, %d. %B %Y %I:%M%p")
'Monday, 17. August 2020 02:04PM'
>>>

 

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论