Python time模块常用时间操作与格式化指南
在Python开发中,处理时间数据是常见需求。本文主要介绍如何使用内置的time模块进行时间的获取、转换、格式化以及简单的计算,包括时间戳与结构化时间的互转、日期差值计算及程序耗时监测。
获取当前时间与基础概念
Python处理时间的核心模块是 time。时间戳(Timestamp)是指相对于1970年1月1日00:00:00(UTC)的秒数偏移量。通过 time.time() 可以获取当前系统时间的时间戳,返回值为浮点数。
import time
# 获取当前时间的时间戳
print(time.time())为了更直观地查看时间,可以使用 time.localtime() 或 time.gmtime()。前者返回当前时区的 struct_time 对象,后者返回0时区(UTC)的 struct_time。struct_time 是一个包含9个元素的元组,分别代表年、月、日、时、分、秒、周几、儒略日和夏令时标志。
# 获取本地时间结构
print(time.localtime())
# 示例输出: (2007, 6, 2, 12, 47, 7, 5, 153, 0)其中,tm_isdst(第9个元素)为0表示非夏令时,1表示夏令时,-1表示由系统决定。
时间格式化与解析
将时间转换为特定格式的字符串,或从字符串解析时间,主要依赖 strftime 和 strptime 函数。
格式化输出 (strftime)
time.strftime(format, t) 将 struct_time 或类似元组转换为字符串。常用的格式符号包括:
%Y:四位数年份%m:月份 (01-12)%d:月内天数 (01-31)%H:24小时制小时数%M:分钟数%S:秒数%X:时间表示法(通常等同于 %H:%M:%S)
示例代码:
ISOTIMEFORMAT = '%Y-%m-%d %X'
# 将当前本地时间格式化为字符串
print(time.strftime(ISOTIMEFORMAT, time.localtime()))
# 将当前UTC时间格式化为字符串
print(time.strftime(ISOTIMEFORMAT, time.gmtime(time.time())))字符串解析 (strptime)
time.strptime(string, format) 将格式化的时间字符串解析为 struct_time 对象,便于进行数学计算。
time_string = "Sat Mar 28 22:24:24 2009"
# 解析字符串为struct_time
t_struct = time.strptime(time_string, "%a %b %d %H:%M:%S %Y")
print(t_struct)时间戳与字符串的相互转换
在实际应用中,常需将时间戳转换为可读字符串,或将字符串转换为时间戳以便计算差值。
时间戳转字符串
使用 time.ctime(timestamp) 可将时间戳直接转换为本地时间的字符串表示。若需自定义格式,可结合 strftime 和 localtime。
# 将时间戳转换为默认格式的字符串
print(time.ctime())
# 自定义格式转换
timestamp = 1180759620.859
formatted_time = time.strftime(ISOTIMEFORMAT, time.localtime(timestamp))
print(formatted_time)字符串转时间戳
首先使用 strptime 将字符串转为 struct_time,再通过 time.mktime() 将其转换为时间戳。
def iso_string_to_timestamp(s, fmt='%Y-%m-%d %X'):
'''将ISO格式时间字符串转换为时间戳'''
t_struct = time.strptime(s, fmt)
return time.mktime(t_struct)
def timestamp_to_iso_string(timestamp, fmt='%Y-%m-%d %X'):
'''将时间戳转换为指定格式的字符串'''
return time.strftime(fmt, time.localtime(float(timestamp)))时间计算与差值
通过转换为时间戳(秒数),可以方便地计算两个时间点之间的差值,或进行日期的加减运算。
def calculate_date_diff(date1_str, date2_str, fmt='%Y-%m-%d %X'):
'''计算两个日期字符串相差的秒数'''
t1 = time.mktime(time.strptime(date1_str, fmt))
t2 = time.mktime(time.strptime(date2_str, fmt))
return t1 - t2
def add_seconds_to_date(date_str, seconds, fmt='%Y-%m-%d %X'):
'''在指定日期基础上增加指定秒数'''
t_struct = time.strptime(date_str, fmt)
current_timestamp = time.mktime(t_struct)
new_timestamp = current_timestamp + seconds
return time.strftime(fmt, time.localtime(new_timestamp))注意:上述示例中的 dateplustime 若涉及“3天”、“13分钟”等自然语言描述,需结合正则表达式解析时间单位后转换为秒数,此处仅展示基于秒数的基础计算逻辑。
程序运行时间监测
time.clock() 可用于测量程序运行的CPU时间或间隔时间(具体行为依赖于操作系统,在Unix上通常返回进程CPU时间,在Windows上返回.wall time)。注意:在Python 3.3+中,推荐使用 time.perf_counter() 或 time.process_time(),但 clock() 在旧代码中仍常见。
import time
if __name__ == '__main__':
time.sleep(1)
print("clock1: %s" % time.clock())
time.sleep(1)
print("clock2: %s" % time.clock())
time.sleep(1)
print("clock3: %s" % time.clock())输出示例显示了每次调用 clock() 时的累积时间值,可用于监测代码段的执行耗时。
线程延迟
time.sleep(seconds) 使当前线程暂停执行指定的秒数,常用于模拟延迟或控制执行节奏。
time.sleep(2) # 暂停2秒总结
掌握 time 模块中的 time()、localtime()、strftime()、strptime() 和 mktime() 等核心函数,能够灵活应对Python开发中的时间获取、格式化、转换及计算需求。对于更复杂的时间处理(如时区转换、日期运算),建议结合 datetime 模块使用。
以上就是Python常用时间操作总结【取得当前时间、时间函数、应用等】的详细内容,更多关于Python time模块使用技巧的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









