联系方式

咨询热线:400-998-6158

点击此处免费预约试听课程»

常见问题
学习资讯
师资介绍
学习资讯

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

相关课程