Python time模块常用时间操作与格式化指南

Ryan
Ryan
发布时间:2026-10-10| 2人浏览过
原创

在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模块使用技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。