深入理解Python中的时间表示:Unix时间点、毫秒和微秒,以及time模块

本套课程在线学习视频

​https://pan.quark.cn/s/3a470a7bbe67​

时间处理是编程中一项重要的任务,尤其是在涉及到时间戳、日志记录和调度等场景时。Python提供了强大的时间处理功能,特别是通过​​time​​模块。本文将探讨Python中的时间表示,特别是Unix时间点、毫秒和微秒的概念,以及如何使用​​time​​模块来操作这些时间。

什么是Unix时间点

Unix时间点(Unix timestamp)是计算机系统中表示时间的一种方式,它计算自1970年1月1日00:00:00 UTC(称为"Unix纪元")以来经过的秒数。Unix时间点是一个整数,通常用于时间戳的存储和比较。

获取当前Unix时间点

可以使用​​time​​模块中的​​time()​​函数来获取当前的Unix时间戳。

示例代码

复制代码
import time

# 获取当前Unix时间点
current_unix_time = time.time()

print(f"当前Unix时间点: {current_unix_time}")

输出结果

复制代码
当前Unix时间点: 1697035247.123456

(输出结果的确切值可能会有所不同,因为它取决于当前的系统时间。)

毫秒和微秒

Unix时间点的表示通常是以秒为单位的浮点数。如果想要以毫秒或微秒为单位表示,可以通过简单的乘法来实现。

获取当前时间的毫秒和微秒表示

复制代码
# 获取当前时间的毫秒表示
current_millis = int(current_unix_time * 1000)
print(f"当前Unix时间点(毫秒): {current_millis}")

# 获取当前时间的微秒表示
current_micros = int(current_unix_time * 1_000_000)
print(f"当前Unix时间点(微秒): {current_micros}")

输出结果

复制代码
当前Unix时间点(毫秒): 1697035247123
当前Unix时间点(微秒): 1697035247123456

使用​​time​​模块的时间戳转换

​time​​模块不仅可以获取当前Unix时间点,还可以将时间戳转换为其他时间格式,例如结构化时间(​​struct_time​​),以及从结构化时间转换回时间戳。

将时间戳转换为结构化时间

复制代码
# 将当前Unix时间点转换为结构化时间
struct_time = time.localtime(current_unix_time)
print(f"结构化时间: {struct_time}")
print(f"格式化时间: {time.strftime('%Y-%m-%d %H:%M:%S', struct_time)}")

输出结果

复制代码
结构化时间: time.struct_time(tm_year=2023, tm_mon=10, tm_mday=10, tm_hour=12, tm_min=34, tm_sec=7, tm_wday=1, tm_yday=283, tm_isdst=0)
格式化时间: 2023-10-10 12:34:07

从结构化时间转换为时间戳

复制代码
# 从结构化时间获取Unix时间点
timestamp_from_struct = time.mktime(struct_time)
print(f"从结构化时间转换的Unix时间点: {timestamp_from_struct}")

输出结果

复制代码
从结构化时间转换的Unix时间点: 1697035247.0

延迟与计时功能

​time​​模块还提供了一些关于时间延迟和计时的功能。例如,可以使用​​time.sleep()​​方法来使程序暂停执行。

示例代码

复制代码
print("开始计时...")
start_time = time.time()

# 暂停程序2秒
time.sleep(2)

end_time = time.time()
elapsed_time = end_time - start_time

print(f"经过的时间: {elapsed_time}秒")

输出结果

复制代码
开始计时...
经过的时间: 2.003456秒

小结

在本文中,我们详细探讨了Python中的时间表示,特别是Unix时间点、毫秒和微秒的概念,并学习了如何使用​​time​​模块来获取和转换时间。通过代码示例和运行结果,我们展示了如何在Python中操作时间,这对于处理时间戳、日志记录和调度任务非常重要。

相关推荐
SsummerC3 分钟前
【leetcode100】组合总和Ⅳ
数据结构·python·算法·leetcode·动态规划
Tandy12356_10 分钟前
Godot开发2D冒险游戏——第一节:主角登场!
python·游戏引擎·godot
普if加的帕22 分钟前
java Springboot使用扣子Coze实现实时音频对话智能客服
java·开发语言·人工智能·spring boot·实时音视频·智能客服
安冬的码畜日常1 小时前
【AI 加持下的 Python 编程实战 2_10】DIY 拓展:从扫雷小游戏开发再探问题分解与 AI 代码调试能力(中)
开发语言·前端·人工智能·ai·扫雷游戏·ai辅助编程·辅助编程
西柚小萌新1 小时前
【Python爬虫基础篇】--4.Selenium入门详细教程
爬虫·python·selenium
朝阳5812 小时前
Rust项目GPG签名配置指南
开发语言·后端·rust
朝阳5812 小时前
Rust实现高性能目录扫描工具ll的技术解析
开发语言·后端·rust
程高兴2 小时前
基于Matlab的车牌识别系统
开发语言·matlab
橘猫云计算机设计2 小时前
springboot基于hadoop的酷狗音乐爬虫大数据分析可视化系统(源码+lw+部署文档+讲解),源码可白嫖!
数据库·hadoop·spring boot·爬虫·python·数据分析·毕业设计
YOULANSHENGMENG2 小时前
linux 下python 调用c++的动态库的方法
c++·python