time 模块处理时间
python 提供了 time 模块用于处理时间和格式化时间,和 Java 不同,python 的时间戳是以秒单位的浮点数(距离 1970-1-1 00:00:00)
获取当前时间戳
可以通过 time.time()获取当前时间戳
import time
ticks = time.time()
print(ticks)
# 输出:1516811586.4532115
获取当前时间元组
可以使用 time.localtime() 获取当前时间元组,元组用于装载当前的时间信息,这个时间元组包含以下属性:
- tm_year: 年份(4位),如:2018;
- tm_mon: 月份,范围 1 - 12;
- tm_mday:月份中的日期,范围 1 -31;
- tm_hour: 小时,范围 0 - 23
- tm_min: 分钟,范围 0 - 59
- tm_sec: 秒,范围 0 - 61(60和61为闰秒)
- tm_wday:一周中的第几天,范围 0 - 6 (0 为周一)
- tm_yday: 一年中的第几天,范围 1-366
- tm_isdst: 是否是夏令时,取值:1(夏令时),0(非夏令时),-1(未知,默认)
import time
curtime = time.localtime()
print(curtime)
print("cur year:", curtime.tm_year)
print("cur month:", curtime.tm_mon)
print("cur date:", curtime.tm_mday)
print("cur hour:", curtime.tm_hour)
print("cur min:", curtime.tm_min)
print("cur sec:", curtime.tm_sec)
# 输出:
# time.struct_time(tm_year=2018, tm_mon=1, tm_mday=25, tm_hour=0, tm_min=42, tm_sec=40, tm_wday=3, tm_yday=25, tm_isdst=0)
# cur year: 2018
# cur month: 1
# cur date: 25
# cur hour: 0
# cur min: 42
# cur sec: 40
格式化时间
对于时间元组的格式化,可以使用 time.asctime() 或 time.strptime() 函数获取时间元组的格式化输出,使用time.mktime() 从格式化时间字符串创建时间元组对象;
python 中的时间格式化符号如下:
%Y | 四位数的年份表示(000-9999) | %y | 两位数的年份表示(00-99) |
%m | 月份(01-12) | %d | 月内中的一天(0-31) |
%H | 24小时制小时数(0-23) | %I | 12小时制小时数(01-12) |
%M | 分钟数(00-59) | %S | 秒(00-59) |
%p | 本地化的 AM,PM | %w | 一周中的第几天(0-6,0为周日) |
%a | 本地简化星期名称,如:Mon | %A | 本地完整星期名称,如:Monday |
%b | 本地简化的月份名称,如:Jan | %B | 本地完整的月份名称,如:January |
%j | 年内的一天(001-366) | %U | 一年中的星期数(00-53),周日为起始 |
%c | 本地相应的日期表示和时间表示; 等同于:%a %b %d %H:%M%S %Y 如:Thu Jan 25 01:22:04 2018 | %Z | 当前时区的名称 |
%x | 本地相应的日期表示; 等同于:%d/%m/%y 如:01/25/18 | %X | 本地相应的时间表示; 等同于:%H:%M%S 如:01:32:46 |
以下为示例使用:
# 快速格式化时间输出
curtime_str = time.asctime(time.localtime())
print(curtime_str)
# 输出:Thu Jan 25 00:42:40 2018
# 时间对象转化为格式化字符串
curtime_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(curtime_str)
# 输出:2018-01-25 00:55:12
# 格式化字符串转化为时间对象
curtime = time.mktime(time.strptime("2017-12-12", "%Y-%m-%d"))
print(curtime)
# 输出:1513008000.0
计算某段程序的运行时间
import time, random
start_tricks = time.clock() # 记录开始CPU时间戳
# 测试代码
mylist = list()
for i in range(0, 10000000):
mylist.append(random.randrange(0, 1000, 10))
del mylist
end_tricks = time.clock() # 记录结束CPU时间戳
run_time = end_tricks - start_tricks # 计算运行时间
print("code running time:", run_time, "seconds")
# 输出: code running time: 12.014192567369587 seconds
time 模块常用方法列表
线程相关 | |
time.sleep(secs) | 线程挂起一段时间,secs指秒数; |
时间操作相关 | |
time.time( ) | 返回当前时间的时间戳(1970纪元后经过的浮点秒数)。 |
time.clock() | 用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用 |
time.altzone() | 返回格林威治西部的夏令时地区的偏移秒数 |
time.gmtime([secs]) | 接收时间辍(1970纪元后经过的浮点秒数)并返回格林威治天文时间下的时间元组 |
time.localtime([secs] | 接收时间辍(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组 |
time.asctime([tupletime]) | 接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008" 的字符串。 |
time.ctime([secs]) | 相当于asctime(localtime(secs)) |
time.mktime(tupletime) | 接受时间元组并返回时间辍(1970纪元后经过的浮点秒数)。 |
time.strftime(fmt[,tupletime]) | 接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定。 |
time.strptime(str,fmt='%a %b %d %H:%M:%S %Y') | 根据fmt的格式把一个时间字符串解析为时间元组。 |