【Python军火库】time、datetime:Python中的时间函数

在这里插入图片描述


一、time模块

在time模块中,有两个最有用也最常用的函数:time.time()和time.sleep()

——

1. time.time()函数

time.time()函数返回的是自Unix纪元以来的秒数,其值为浮点数,这个数字也被称为UNIX纪元时间戳

Unix纪元:1970年1月1日0点,即协调世界时间(UTC)

在Python中输入代码:

import time
print(time.time())

打印结果:1582877410.7533364

我调用程序的时间为2020年2月28日16:11,其结果就是Unix纪元与time.time()调用那一刻之间的秒数。

利用time.time()函数,我们可以测量一段代码的运行时间

import time

# 定义一个函数计算1到99999的乘积
def calcProd():
	product = 1
	for i in range(1,100000):
		product *= i
	return product

stratTime = time.time()  # 记录函数开始时间
prod = calcProd()        # 执行函数
endTime = time.time()    # 记录函数结束时间
print('The result is %s digits long.'%(len(str(prod))))        # 打印最终结果的位数
print('Took %s seconds to calculate.'%(round(endTime-stratTime,2)))  # 打印程序执行时间并保留两位小数

最终的结果
在这里插入图片描述
——

2. time.sleep()函数

time.sleep()可以说是一个非常常用的一个函数,能够使程序暂停指定的秒数再运行。

但是在使用time.sleep()函数有一个非常需要注意的地方是,在程序运行过程中进行中断程序是不会中断time.sleep()调用的,而是回在time.sleep()暂停结束后,再抛出KeyboardInterrupt异常。

所以比如要暂停30秒,不是一次性调用time.sleep(30),最好的方式是利用for循环调用30次time.sleep(1)。

import time

for i in range(30):
	time.sleep(1)

在这暂停的30秒内,随时中断程序便能够立马看到抛出KeyboardInterrupt异常。
在这里插入图片描述

二、datetime模块

datetime模块可以以更方便直观的格式显示日期,同时对日期进行算术运算。

——

1. datetime数据类型

datetime值表示一个特定时刻

首先我们输入以下代码并运行

import time,datetime

dt = datetime.datetime.now()
print(dt)
print(dt.year,dt.month,dt.day,dt.hour,dt.minute,dt.second,dt.microsecond)

print(datetime.datetime(2020,2,2,2,2,2))

print(datetime.datetime.fromtimestamp(time.time()))

其打印结果
在这里插入图片描述
我们可以知道

  • datetime.datetime.now()返回一个datetime对象,表示当前的日期和时间
  • 该对象包含了以下属性:year、month、day、hour、minute、second和micosecond,分别代表当前时刻的年、月、日、时、分、秒和微秒
  • 我们也可以直接向datetime.datetime()函数传入年月日时分秒,从而得到特定时刻的datetime对象
  • 利用datetime.datetime.fromtimestamp()函数,我们可以将Unix时间戳转换为datetime对象

——

2. timedelta数据类型

与datetime数据类型相对应的,timedelta数据类型表示一段时间

import datetime

delta = datetime.timedelta(days=11, hours=10, minutes=9, seconds=8)
print(delta.days, delta.seconds, delta.microseconds)  # seconds属性为(10小时、9分钟、8秒,以秒表示)
print(delta.total_seconds())      # 返回以秒表示的总的时间段
print(str(delta))                 # 返回格式良好且可读的字符串表示

其打印结果
在这里插入图片描述

同样总结一下

  • datetime.timedelta()函数可接受关键字参数weeks、days、hours、minutes、seconds、microseconds,主要注意的是timedelta对象中没有year和month
  • timedelta对象拥有的时间以天、秒、微秒表示,分别存储在days、seconds和microseconds属性中
  • total_seconds()方法返回以秒表示的总时间
  • 将timedelta对象传入str(),可以得到格式良好、人类可读的字符串时间

——

4. datetime对象与字符串转换

【01】strftime():datetime对象转换为字符串

strftime()方法的使用类似于Python中的字符串格式化,其完整的指令如下

格式符 含义
%a 星期的英文单词的缩写:如星期一, 则返回 Mon
%A 星期的英文单词的全拼:如星期一,返回 Monday
%b 月份的英文单词的缩写:如一月, 则返回 Jan
%B 月份的引文单词的缩写:如一月, 则返回 January
%c 返回datetime的字符串表示,如02/28/20 17:01:26
%d 返回的是当前时间是当前月的第几天
%f 微秒的表示: 范围: [0,999999]
%H 以24小时制表示当前小时
%I 以12小时制表示当前小时
%j 返回 当天是当年的第几天 范围[001,366]
%m 返回月份 范围[0,12]
%M 返回分钟数 范围 [0,59]
%P 返回是上午还是下午–AM or PM
%S 返回秒数 范围 [0,61]
%U 返回当周是当年的第几周 以周日为第一天
%W 返回当周是当年的第几周 以周一为第一天
%w 当天在当周的天数,范围为[0, 6],6表示星期天
%x 日期的字符串表示 :02/28/20
%X 时间的字符串表示 :17:30:18
%y 两个数字表示的年份 20
%Y 四个数字表示的年份 2020
%z 与utc时间的间隔 (如果是本地时间,返回空字符串)
%Z 时区名称(如果是本地时间,返回空字符串)

代码演示

import datetime

now = datetime.datetime.now()
print(now.strftime('%Y/%m/%d %H:%M:%S'))
print(now.strftime('%I:%M %p'))

打印结果
在这里插入图片描述

【02】strptime():字符串转换为datetime对象

striptime()的作用正好与strftime()相反,但是使用的格式符指令是一致。

通过将格式符传入strptime(),从而使函数解析日期字符串。

代码演示:

import datetime

dt = datetime.datetime.strptime('2020/2/28 17:41:00', '%Y/%m/%d %H:%M:%S')
print(dt)

打印结果
在这里插入图片描述

——

4. datetime简单运用

【01】计算今天之后1000天的日期

import datetime

dt = datetime.datetime.now()
timepass = datetime.timedelta(days=1000)
dt = dt+timepass
print(dt)

运行程序,得到1000天后的日期
在这里插入图片描述
【02】暂停直至特定日期

利用while循环,让程序暂停直至到2020年双十一再运行

import time, datetime

double11 = datetime.datetime(2020,11,11,0,0,0)
while datetime.datetime.now() < double11:
	time.sleep(1)

在这里插入图片描述
在这里插入图片描述

发布了35 篇原创文章 · 获赞 35 · 访问量 2738

猜你喜欢

转载自blog.csdn.net/nilvya/article/details/104553065