批量时间戳转换
每行输入一个时间戳(支持秒或毫秒级),最多可同时转换 1000 条
一次转换多条 Unix Timestamp,支持自动检测秒或毫秒单位
每行输入一个时间戳(支持秒或毫秒级),最多可同时转换 1000 条
在服务器日志与应用程序日志中,时间通常以 Unix Timestamp 的形式记录。当你需要排查问题、追踪错误或分析性能瓶颈时,往往需要将大量的时间戳批量转换为人类可读的日期时间格式,才能快速定位事件发生的时间点。
例如,Nginx access log、系统 syslog、应用程序 error log 等,都可能包含数百甚至数千条时间戳。使用批量转换工具,可以一次性将这些时间戳转换为可读格式,大幅提升分析效率。
在进行数据库迁移或数据清洗时,常会遇到时间字段以 Unix Timestamp 存储的情况。尤其是从 MySQL、PostgreSQL 等关系型数据库导出数据后,需要验证时间字段是否正确。通过批量转换,可以快速检查导出的时间戳是否对应到预期的日期。
许多 RESTful API 的响应数据中,时间字段使用 Unix Timestamp 格式。在开发与测试阶段,批量转换工具能帮助开发者快速验证多条 API 响应中的时间字段是否正确。
在制作数据报表时,原始数据中的时间戳需要转换为可读日期。批量转换可以一次处理所有数据,方便后续导入 Excel 或 Google Sheets 进行分析。
import datetime
timestamps = [1700000000, 1700000001, 1711929600, 1700000002000]
for ts in timestamps:
# 自动检测:超过 10 位数视为毫秒
if ts > 9999999999:
dt = datetime.datetime.fromtimestamp(ts / 1000)
else:
dt = datetime.datetime.fromtimestamp(ts)
print(f"{ts} -> {dt.strftime('%Y-%m-%d %H:%M:%S')}")
const timestamps = [1700000000, 1700000001, 1711929600, 1700000002000];
timestamps.forEach(ts => {
// 自动检测:超过 10 位数视为毫秒
const ms = ts > 9999999999 ? ts : ts * 1000;
const date = new Date(ms);
const formatted = date.getFullYear() + '-' +
String(date.getMonth() + 1).padStart(2, '0') + '-' +
String(date.getDate()).padStart(2, '0') + ' ' +
String(date.getHours()).padStart(2, '0') + ':' +
String(date.getMinutes()).padStart(2, '0') + ':' +
String(date.getSeconds()).padStart(2, '0');
console.log(`${ts} -> ${formatted}`);
});
自动检测的判断逻辑很简单:如果输入的数值大于 9999999999(即超过 10 位数),则判定为毫秒级时间戳;否则判定为秒级时间戳。这是因为秒级时间戳在 2001 年之后就已经是 10 位数(例如 1000000000 对应 2001-09-09),而毫秒级时间戳则是 13 位数。因此,超过 10 位数的数值几乎可以确定是毫秒级。
本工具建议一次转换不超过 1000 条时间戳。由于所有运算都在浏览器端完成,实际上限取决于你的设备性能。一般而言,1000 条以内的转换可以在瞬间完成。如果需要处理更大量的数据,建议使用 Python 或 Node.js 等程序语言在本地端批量处理。
可以。转换完成后,页面会出现「导出 CSV」按钮,点击即可将结果下载为 CSV 文件。你可以用 Excel、Google Sheets 或其他电子表格软件打开 CSV 文件,进行进一步的数据处理与分析。
大多数日志格式中,时间戳会以连续数字的形式出现。你可以使用正则表达式来提取。例如在 Linux 终端中,使用以下命令提取 10 位或 13 位数字:
grep -oP '\b\d{10,13}\b' access.log
提取后,将结果直接粘贴到上方的文本区域即可批量转换。如果日志量很大,也可以搭配 head 或 tail 命令先筛选特定范围的日志再提取。