更多课程 选择中心


Python培训

400-111-8989

Python二级必考库之time

  • 发布:Python培训
  • 来源:深度学习与资源共享
  • 时间:2019-08-20 15:01

该模块提供各种与时间相关的功能。为了应用简单可在程序开始前加上下面这句:

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

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:二级Python备考建议
下一篇:Python二级等级考试相关问题全解答

2021年Python全套免费视频教程在哪里?

Python编程学习路线

Python最高有几级?

人工智能与语音遥控的区别?

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省