Python获取13位和10位时间戳方法及转换技巧

白榆
白榆
发布时间:2026-10-10| 3人浏览过
原创

在Python开发中,处理时间戳是接口通信、数据埋点与日志管理的核心基础。本文详细演示如何利用time和datetime标准库快速生成10位秒级与13位毫秒级时间戳,并提供互转可读格式、解析固定日期字符串的完整代码链路,同时说明时区配置与大数处理的关键参数,确保脚本在任何主流操作系统下稳定运行。

实时获取10位与13位时间戳

第1步:生成当前时间戳

获取时间戳的核心逻辑是将系统当前时间换算为自Unix纪元(1970年1月1日00:00:00)以来的浮点数秒值,再通过乘法与取整操作调整精度。Python标准库提供了两种等效入口:

  • time.time():直接调用底层C库,性能略高,适合高频调用场景。
  • datetime.datetime.now().timestamp():基于面向对象模型,便于后续链式调用日期对象属性。
import time
import datetime

# 获取10位秒级时间戳
timestamp_10 = int(time.time())
print("10位时间戳:", timestamp_10)

# 获取13位毫秒级时间戳
timestamp_13 = int(time.time() * 1000)
print("13位时间戳:", timestamp_13)

完成判断:终端输出纯数字字符串,长度分别为10位或13位,且随系统时钟递增。若用于API签名或前端展示,需统一类型转为字符串或按业务要求保留整型。

第2步:将时间戳转换为可读时间

逆向转换时需区分精度。10位时间戳直接传入fromtimestamp()即可;13位时间戳必须先除以1000降为秒级浮点数,否则会导致年份溢出异常。格式化时使用strftime定义输出模板:

# 10位转可读时间
ts_10 = 1672531200
readable_10 = datetime.datetime.fromtimestamp(ts_10).strftime('%Y-%m-%d %H:%M:%S')
print("秒级对应时间:", readable_10)

# 13位转可读时间
ts_13 = 1672531200000
readable_13 = datetime.datetime.fromtimestamp(ts_13 / 1000).strftime('%Y-%m-%d %H:%M:%S.%f')[:23]
print("毫秒级对应时间:", readable_13)

注意:%f默认输出6位微秒,代码中切片截取前3位以匹配毫秒显示习惯。若仅需整数秒部分,可省略微秒格式化。

第3步:将日期字符串转换为时间戳

当外部传入固定格式的日期文本时,需先解析为datetime对象再提取时间戳。此方法常用于批量导入CSV、Excel或配置文件中的静态时间字段:

date_str = "2024-05-20 14:30:00"
dt_obj = datetime.datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")

# 转为10位时间戳
ts_sec = int(dt_obj.timestamp())
# 转为13位时间戳
ts_ms = int(dt_obj.timestamp() * 1000)

print(f"原始字符串 '{date_str}' 对应10位: {ts_sec}, 13位: {ts_ms}")

输入格式参数必须与源字符串严格对齐,否则抛出ValueError。支持灵活扩展至包含月份简称、12小时制等变体模板。

精度控制与系统环境注意事项

在实际工程中,时间戳处理常伴随以下边界条件,需提前规划:

  • 精度差异:10位仅精确到秒,丢失毫秒信息;13位适用于高频交易、音视频同步等对时序敏感的场景。
  • 时区处理:time.time()始终返回本地系统时区的秒值。若需绝对UTC标准,推荐改用datetime.datetime.now(datetime.timezone.utc),避免老旧的utcnow()引发的弃用警告。
  • 跨平台兼容:上述模块属于Python标准库,无需额外依赖,在Windows、Linux及macOS上行为一致。
  • 大整数安全:Python 3的int原生支持任意精度,不会出现C/C++中的32位/64位整型溢出问题,直接用于存储或网络传输即可。

完整封装示例

为便于日常集成,可将常用操作收敛为独立工具函数,降低重复编码成本:

import time
import datetime

def manage_timestamps(local_time=None):
    # 未传参则抓取当前系统时间
    ref_time = local_time or datetime.datetime.now()
    
    ts_10 = int(ref_time.timestamp())
    ts_13 = int(ref_time.timestamp() * 1000)
    fmt_dt = ref_time.strftime('%Y-%m-%d %H:%M:%S.%f')[:23]
    
    print(f"基准时间: {fmt_dt}")
    print(f"10位戳: {ts_10} | 13位戳: {ts_13}")
    
    # 演示反向解析
    sample_str = "2023-11-11 08:00:00"
    dt_parsed = datetime.datetime.strptime(sample_str, "%Y-%m-%d %H:%M:%S")
    print(f"解析 '{sample_str}' → 10位: {int(dt_parsed.timestamp())} | 13位: {int(dt_parsed.timestamp()*1000)}")

if __name__ == "__main__":
    manage_timestamps()

运行该脚本可直接验证正向生成、精度换算与逆向解析的全链路逻辑。合理选择秒级或毫秒级阈值,配合明确的格式规范,能有效规避多数时间序列比对与序列化冲突。以上就是Python时间戳获取、转换与注意事项的详细内容,更多关于Python datetime模块实用技巧的资料请关注本站其它相关文章!

相关标签:

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

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 算法库。