达内python第二阶段月考_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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值