引言
时间日期操作在我们的日常编程中,应用极为广泛。简单到预计程序执行的时间问题,复杂到我们平常的定时任务,或者时间约束等(比如n天、n小时、n分钟之前或之后的时间和日期等)。python中时间日期相关的模块包括:time,datetime 以及 calendar
说明:
在Python中,通常有这几种方式来表示时间:
1)时间戳(距离1970年的秒数)
2) 格式化的时间字符串
3)元组(struct_time)共九个元素(不便展开介绍,可baidu)
1.datatime模块介绍
常用对象解释如下所示
from datatime import datatime
对象 | 解释 | 常用属性 |
---|---|---|
datetime.date | 表示日期的对象 | year, month, day |
datetime.time | 表示时间的对象 | hour, minute, second, microsecond |
datetime.timedelta | 表示两个日期或时间之间的间隔 | |
datetime.datetime | 表示日期和时间的类 | year, month, day, hour, minute, second, microsecond |
以上最常用的对象是datatime.datatime,下面介绍常用的函数
函数名 | 功能描述 | 例子 |
---|---|---|
now() | 得到当前时间 | now() |
strptime(p1,p2) | 将字符串转化成特定的时间格式 | strptime(‘2016-6-1 18:19:59’, ‘%Y-%m-%d %H:%M:%S’) |
timedelta(days=0, seconds=0, minutes=0, hours=0) | 时间日期加减运算 | now()+timedelta(days=10) |
2.time模块介绍
import time
函数 | 功能 | 举例 |
---|---|---|
time.sleep(seconds) | 休眠 | time.sleep(60) |
time.localtime([timestamp]) | 将时间戳转化为元组形式 | time.localtime() |
time.time() | 返回当前时间的时间戳 | time.time() |
time.strftime(format[, t]) | 把时间的元组转化为格式化的时间字符 | time.strftime(‘%m:%d %H:%m’,time.localtime()) |
time.strptime(string[, format]) | 把时间字符串转化为时间元组 | time.strptime(‘2016 10:28’, ‘%Y %m:%d’) |
相互转化关系见下图:
3.实战
import time
import datetime
"""
获得n小时之前的时间,通过修改timelocaltime()中的时间戳参数可以变成获得任意n天、小时、分、秒之前或之后的时间格式
"""
def get_nHours(n):
before_12hours= time.strftime('%m:%d %H:%m', time.localtime(time.time() - n * 60 * 60))
if timestr>before_12hours:
return True
return False
"""
判断给定日期是否在距离今天n天之内...,
timestr时间格式为07-12,10-23等
"""
def isindays(timestr,n_days):
nDayAgo=(datetime.datetime.now()-datetime.timedelta(days=n_days))
ndayAgo_str=nDayAgo.strftime('%m-%d')
if ndayAgo_str>timestr:
return False
else:
return True
"""
计算程序执行的时间
"""
def calculate():
start=datetime.datetime.now()
time.sleep(60)
second=(datetime.datetime.now()-start).seconds
print("程序运行了%d秒"%second)
4.关于时间日期系列,我本身也是不是很熟练,都是用一些很常用的函数,今天正好有时间整理一下,方便以后使用。其中还参考了一些好文章,我只是粗略的讲解下,详细见文章地址如下:http://www.jb51.net/article/49326.htm