MediaCrawler-new时间工具类:Unix时间戳与RFC2822格式互转
【免费下载链接】MediaCrawler-new 项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new
在数据采集和处理过程中,时间格式的转换是常见需求。MediaCrawler-new项目提供了功能完善的时间工具类,支持Unix时间戳与RFC2822格式的相互转换。本文将详细介绍tools/time_util.py模块的使用方法,帮助开发者快速上手时间格式处理。
工具类功能概览
tools/time_util.py模块包含10+个时间处理函数,核心功能涵盖:
- Unix时间戳(秒/毫秒)与字符串格式互转
- RFC2822时间格式解析与转换
- 本地时间与UTC时间转换
- 日期时间格式化输出
模块文件结构
tools/
├── __init__.py
├── time_util.py # 时间工具类核心实现
└── ...
核心转换功能详解
1. RFC2822转Unix时间戳
RFC2822(电子邮件日期格式)是互联网常用的时间表示方式,格式如"Sat Dec 23 17:12:54 +0800 2023"。模块提供rfc2822_to_timestamp()函数实现转换:
from tools.time_util import rfc2822_to_timestamp
rfc_time = "Sat Dec 23 17:12:54 +0800 2023"
timestamp = rfc2822_to_timestamp(rfc_time)
print(timestamp) # 输出:1703315574
函数内部实现逻辑:
- 使用
datetime.strptime()解析RFC2822格式字符串 - 转换为UTC时区时间
- 计算并返回Unix时间戳(秒级)
2. Unix时间戳转本地时间
对于13位毫秒级时间戳,get_time_str_from_unix_time()函数可自动识别并转换:
from tools.time_util import get_time_str_from_unix_time
# 处理毫秒级时间戳
ms_timestamp = 1703315574000
print(get_time_str_from_unix_time(ms_timestamp)) # 输出:2023-12-23 17:12:54
# 处理秒级时间戳
s_timestamp = 1703315574
print(get_time_str_from_unix_time(s_timestamp)) # 输出:2023-12-23 17:12:54
3. RFC2822转中国本地时间
rfc2822_to_china_datetime()函数可直接将RFC2822时间转换为东八区(UTC+8)时间:
from tools.time_util import rfc2822_to_china_datetime
rfc_time = "Sat Dec 23 17:12:54 +0800 2023"
china_time = rfc2822_to_china_datetime(rfc_time)
print(china_time.strftime("%Y-%m-%d %H:%M:%S")) # 输出:2023-12-23 17:12:54
应用场景示例
场景1:API响应时间处理
在爬虫开发中,常需处理接口返回的时间戳:
# 假设从API获取的时间戳
api_timestamp = 1703315574000 # 毫秒级
# 转换为可读时间
from tools.time_util import get_time_str_from_unix_time
print(get_time_str_from_unix_time(api_timestamp)) # 2023-12-23 17:12:54
场景2:日志时间标准化
将不同格式的时间统一转换为Unix时间戳存储:
from tools.time_util import rfc2822_to_timestamp, get_unix_time_from_time_str
# 处理RFC2822格式日志
log_time1 = "Sat Dec 23 17:12:54 +0800 2023"
print(rfc2822_to_timestamp(log_time1)) # 1703315574
# 处理普通字符串格式日志
log_time2 = "2023-12-23 17:12:54"
print(get_unix_time_from_time_str(log_time2)) # 1703315574
函数调用流程图
完整函数列表
| 函数名 | 功能描述 | 参数类型 | 返回值 |
|---|---|---|---|
| get_current_timestamp() | 获取当前13位毫秒时间戳 | - | int |
| get_unix_timestamp() | 获取当前10位秒级时间戳 | - | int |
| get_time_str_from_unix_time(unixtime) | 时间戳转日期时间字符串 | int | str |
| get_date_str_from_unix_time(unixtime) | 时间戳转日期字符串 | int | str |
| rfc2822_to_timestamp(rfc2822_time) | RFC2822转Unix时间戳 | str | int |
| rfc2822_to_china_datetime(rfc2822_time) | RFC2822转中国本地时间 | str | datetime |
扩展阅读
- 官方时间工具源码:tools/time_util.py
- 项目通用工具模块:tools/
- 单元测试示例:test/test_utils.py
通过本文介绍,您已掌握MediaCrawler-new时间工具类的核心用法。该模块已在多个平台爬虫中得到验证,如media_platform/douyin/core.py和media_platform/xhs/core.py均有广泛应用。如需进一步定制时间格式,可基于现有函数进行扩展开发。
【免费下载链接】MediaCrawler-new 项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



