Python二级库:time
该模块提供各种与时间相关的功能。为了应用简单可在程序开始前加上下面这句:
from time import *#本文是使用 import time
下面介绍比较常用的函数
time.altzone()
返回格林威治西部的夏令时地区的偏移秒数,如果该地区在格林威治东部会返回负值(如西欧,包括英国),对夏令时启用地区才能使用
time.asctime([t])
接受时间元组并返回一个可读的形式"Tue May 30 17:17:30 2017"(2017年5月30日周二17时17分30秒)的24个字符的字符串
time.clock()
用以浮点数计算的秒数返回当前的CPU时间,用来衡量不同程序的耗时,比time.time()更有用
time.ctime([secs])
作用相当于asctime(localtime(secs)),未给参数相当于asctime()
time.gmtime([secs])
接收时间辍(1970纪元年后经过的浮点秒数)并返回格林威治天文时间下的时间元组t(t.tmisdst始终为0)
time.daylight()
如果夏令时被定义,则该值为非零
time.localtime([secs])
接收时间辍(1970纪元年后经过的浮点秒数)并返回当地时间下的时间元组t(t.tmisdst可取为0或1,取决于当地当时是不是夏令时)
time.mktime(t)
接受时间元组并返回时间辍(1970纪元年后经过的浮点秒数)
time.perf_counter()
返回计时器的精准时间(系统的运行时间),包含整个系统的睡眠时间.由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的
time.process_time()
返回当前进程执行CPU的时间总和,不包含睡眠时间.由于返回值的基准点是未定义的,所以只有连续调用的结果之间的差才是有效的
time.sleep(secs)
推迟调用线程的运行,secs的单位是秒
time.strftime(format[,t])
把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串.如果t未指定,将传入time.localtime(),如果元组中任命一个元素越界,将会抛出ValueError异常,其format格式如下:
%a 本地(local)简化星期名称 %A 本地完整星期名称 %b 本地简化月份名称 %B 本地完整月份名称 %c 本地相应的日期和时间表示 %d 一个月中的第几天(01-31) %H 一天中的第几个小时(24小时制,00-23) %l 一天中的第几个小时(12小时制,01-12) %j 一年中的第几天(01-366) %m 月份(01-12) %M 分钟数(00-59) %p 本地am或者pm的相应符 %S 秒(01-61) %U 一年中的星期数(00-53,星期天是一个星期的开始,*一个星期天之前的所有天数都放在第0周) %w 一个星期中的第几天(0-6,0是星期天) %W 和%U基本相同,不同的是%W以星期一为一个星期的开始 %x 本地相应日期 %X 本地相应时间 %y 去掉世纪的年份(00-99) %Y 完整的年份 %z 用+HHMM或者-HHMM表示距离格林威治的时区偏移(H代表十进制的小时数,M代表十进制的分钟数) %Z 时区的名字(如果不存在为空字符) %% %号本身
当使用strptime()函数时,只有当在这年中的周数和天数被确定的时候%U和%W才会被计算。
time.strptime(string[,format])
把一个格式化时间字符串转化为struct_time,实际上它和strftie()是逆操作
time.time()
返回当前时间的时间戳(1970元年后的浮点秒数)
time.timezone()
是当地时区(未启动夏令时)距离格林威治的偏移秒数(美洲>0,欧洲大部分,亚洲,非洲<=0)
time.tzname
包含两个字符串的元组,*一是当地夏令时区的名称,第二是当地的DST时区的名称
下面用个例子介绍下这些函数:
#!/usr/bin/env python # -*- coding: utf-8 -*- import time def parse_timestr(time_str, flag=True): """
把时间字符串转换为时间戳格式 :param time_str: 时间字符串,格式为:2019-01-01 12:12:12 或 2019-01-01 :param flag: 标志位,决定输入时间字符串的格式 :return: 时间戳格式 """ if flag: struct_time = time.strptime(time_str, "%Y-%m-%d %H:%M:%S") # 2019-01-01 12:12:12 else: struct_time = time.strptime(time_str, "%Y-%m-%d") # 2019-01-01 return time.mktime(struct_time) def parse_timestamp(time_stamp, flag=True): """ 把时间戳转换为时间字符串 :param time_stamp: 时间戳 :param flag: 标志位,可以指定输出时间字符串的格式 :return: 时间字符串,格式为:2019-01-01 12:12:12 或 2019-01-01 """ localtime = time.localtime(time_stamp) if flag: time_str = time.strftime("%Y-%m-%d %H:%M:%S", localtime) else: time_str = time.strftime("%Y-%m-%d", localtime) return time_str def day_range(interval_day): """ 获取指定天内的时间字符串的列表 :return: """ c_time = (int(time.time() / (24 * 3600)) + 1) * 24 * 3600 day_range_str = c_time - 24 * 3600 * interval_day day_list = [parse_timestamp(t, flag=False) for t in range(day_range_str, c_time, 3600 * 24)] return day_list def is_workday(time_str): """ 传入时间字符串,判断传入时间字符串是否是工作日 :param time_str: *是时间字符串类型,比如:"2019-01-21 14:30:31" :return: True/False,是否为非工作日 """ tmp = time.strptime(time_str, "%Y-%m-%d %H:%M:%S") workday_list = ["Mon", "Tue", "Wed", "Thu", "Fri"] week = time.strftime("%a", tmp) if week in workday_list: return True else: return False def is_holiday(time_str): """ 传入时间字符串,判断传入时间字符串是否是工作日 :param time_str: *是时间字符串类型,比如:"2019-01-21 14:30:31" :return: True/False,是否为非工作日 """ tmp = time.strptime(time_str, "%Y-%m-%d %H:%M:%S") holiday_list = ["Sat", "Sun"] week = time.strftime("%a", tmp) if week in holiday_list: return True else: return False def get_day_list(start_timestamp, end_timestamp, flag = True): """ 传入开始时间戳和结束时间戳,获取时间段内的日期列表 :param start_timestamp: 开始时间戳 :param end_timestamp: 结束时间戳 :param flag: 标志位 :return: 日期列表 """ tmp = range(int(start_timestamp), int(end_timestamp) + 3600, 3600 * 24) if flag: tmp_range = [{"day_str": parse_timestamp(i, flag=False)} for i in tmp] else: tmp_range = [parse_timestamp(i, flag=False) for i in tmp] return tmp_range def covert_time(time_str): """ 把时间段转换为秒数 :param time_str: :return: """ if time_str.endswith("h"): stamp = float(time_str.strip("h")) * 3600 elif time_str.endswith("m"): stamp = float(time_str.strip("m")) * 60 else: stamp = float(time_str) return stamp
更多培训课程,学习资讯,课程优惠等学校信息,请进入 郑州金水区java培训郑州上街区C语言培训 网站详细了解,免费咨询电话:400-998-6158