我做了一个不烂的时间戳转换器(而且免费)
Source: Dev.to
调试 API 日志时,常常要盯着类似 1706745600 这样的原始值,心想“这到底是哪个日期?”
快速在 Google 上搜索 “unix timestamp converter” 通常会跳到充斥广告的页面,里面还有用于选择 “Unix timestamp (seconds)” 的下拉框、更多广告以及注册提示。
我受够了。一个周末,我打造了 TimeStampConverter.net —— 一个就是能用的时间戳转换器。
有何不同?
自动检测
粘贴 任何内容。工具会自动识别格式:
| 格式 | 示例 |
|---|---|
| Unix 时间戳(秒) | 1706745600 |
| Unix 时间戳(毫秒) | 1706745600000 |
| ISO 8601 | 2024-01-31T12:00:00Z |
| RFC 2822 | Thu, 31 Jan 2024 12:00:00 GMT |
| 人类可读 | January 31, 2024 |
没有下拉框,没有额外点击。
一次粘贴,七种格式
单次粘贴即可一次性显示所有格式:
Unix (seconds): 1706745600
Unix (ms): 1706745600000
ISO 8601 (UTC): 2024-01-31T17:00:00.000Z
ISO 8601 (Local): 2024-01-31T12:00:00.000-05:00
RFC 2822: Wed, 31 Jan 2024 12:00:00 -0500
Human: January 31, 2024 12:00:00 PM
Relative: 2 hours ago
每行都有一个 复制 按钮,方便快速粘贴。
400+ 时区
可搜索的时区下拉列表让您快速定位任意时区(例如,输入 “Tokyo”)。
内置日期运算
- 添加/减去年、月、日、小时、分钟、秒
- 计算两个时间戳之间的持续时间
- 正确处理夏令时和闰年
批量转换
粘贴多个时间戳(每行一个),一次性全部转换——非常适合日志分析。
URL 分享
通过链接分享特定时间戳,例如 https://timestampconverter.net?ts=1706745600。
默认暗色模式
因为我们很多人凌晨 2 点还在调试。
零追踪
没有分析工具,没有广告,没有注册,没有 Cookie。所有操作均在客户端完成。
技术栈
我把它 极度简化 了:
{
"dependencies": {
"dayjs": "^1.11.10"
}
}
- Vanilla JavaScript – 不使用 React、Vue,也不需要构建步骤
- day.js – 轻量级日期库(约 2 KB)
- Cloudflare Pages – 免费托管,配备全球 CDN
总打包体积:约 50 KB
为什么选择 Vanilla JS?
- 不需要状态管理
- 不需要路由
- 不需要虚拟 DOM
- 加载速度快——同等的 React 应用体积会超过 200 KB,而此页面在全球范围内加载时间不足 100 ms。
Source: …
自动检测工作原理
核心是一个基于正则表达式的检测器:
function detectTimestampFormat(input) {
const trimmed = input.trim();
// Unix timestamp (10 digits = seconds)
if (/^\d{10}$/.test(trimmed)) {
return { type: 'unix-seconds', value: parseInt(trimmed) };
}
// Unix timestamp (13 digits = milliseconds)
if (/^\d{13}$/.test(trimmed)) {
return { type: 'unix-ms', value: parseInt(trimmed) };
}
// ISO 8601 (starts with YYYY‑MM‑DDT)
if (/^\d{4}-\d{2}-\d{2}T/.test(trimmed)) {
return { type: 'iso8601', value: trimmed };
}
// RFC 2822 (starts with day name)
if (/^[A-Za-z]{3},\s\d{2}\s[A-Za-z]{3}\s\d{4}/.test(trimmed)) {
return { type: 'rfc2822', value: trimmed };
}
// Generic date parsing with dayjs
const parsed = dayjs(trimmed);
if (parsed.isValid()) {
return { type: 'generic', value: trimmed };
}
return { type: 'invalid', value: null };
}
检测到后,转换就非常直接:
function convertTimestamp(detected) {
let date;
switch (detected.type) {
case 'unix-seconds':
date = dayjs.unix(detected.value);
break;
case 'unix-ms':
date = dayjs(detected.value);
break;
default:
date = dayjs(detected.value);
}
return {
unixSeconds: date.unix(),
unixMs: date.valueOf(),
iso8601UTC: date.utc().format(),
iso8601Local: date.format(),
rfc2822: date.format('ddd, DD MMM YYYY HH:mm:ss ZZ'),
humanReadable: date.format('MMMM D, YYYY h:mm:ss A'),
relative: date.fromNow()
};
}
在 Cloudflare Pages 上部署
部署轻而易举:
# 1. Build (nothing to build for vanilla JS!)
# 2. Deploy
wrangler pages deploy . --project-name=timestamp
# Done. Live globally in ~30 seconds.
Cloudflare 提供:
- 免费套餐下无限带宽
- 300+ 边缘节点
- 自动 HTTPS
- 每次 git 推送都有预览部署
- 内置分析
全部费用为 $0/月。
我学到的
- Sometimes Vanilla JS is the Right Choice – 小型工具在性能上可以胜过框架。
- Auto‑Detection is Magical UX – 用户喜欢“即开即用”的工具。
- Dark Mode Should Be Default – 开发者工具常在夜间使用。
- Cloudflare Pages Is Underrated – 对全球用户免费、无限且快速。
- Solve Your Own Problem – 构建自己需要的东西可以验证其价值。
接下来是什么?
潜在功能:
- 浏览器扩展(右键 → 转换)
- 用于编程使用的 API 端点
- 高级日期运算(例如,工作日计算)
- 导出选项(CSV、JSON)用于批量结果
如果你想帮助,欢迎打开 issue 或提交 PR!
自动访问
- Cron 表达式验证器
- ISO 周数计算器
说实话,这个工具已经满足我的需求,我可能就保持原样了。
亲自尝试
TimeStampConverter.net – 无需注册,无追踪,无废话。仅提供时间戳。如果觉得有用,请收藏。
FAQ
Q: 这是开源吗?
A: 还不是,但我在考虑。如果有兴趣,我会把它放到 GitHub 上。
Q: 你如何从中赚钱?
A: 我不赚钱。运行成本为 $0/月。以后可能会加一个“请我喝咖啡”按钮。
Q: 我可以在我的应用/API 中使用它吗?
A: 所有内容都在客户端运行,所以可以。如果你需要服务器端的 API 接口,请告诉我——我可能会构建一个。
Q: 隐私方面如何?
A: 所有转换都在你的浏览器中完成。我看不到你转换的内容。Cloudflare 只记录基本的 CDN 指标(各地区请求数、带宽),不记录用户数据。
Q: 你能添加功能吗?
A: 也许可以!在下方留言或通过网站给我发邮件。