我做了一个不烂的时间戳转换器(而且免费)

发布: (2026年2月1日 GMT+8 03:58)
7 min read
原文: Dev.to

Source: Dev.to

调试 API 日志时,常常要盯着类似 1706745600 这样的原始值,心想“这到底是哪个日期?”
快速在 Google 上搜索 “unix timestamp converter” 通常会跳到充斥广告的页面,里面还有用于选择 “Unix timestamp (seconds)” 的下拉框、更多广告以及注册提示。

我受够了。一个周末,我打造了 TimeStampConverter.net —— 一个就是能用的时间戳转换器。

有何不同?

自动检测

粘贴 任何内容。工具会自动识别格式:

格式示例
Unix 时间戳(秒)1706745600
Unix 时间戳(毫秒)1706745600000
ISO 86012024-01-31T12:00:00Z
RFC 2822Thu, 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/月

我学到的

  1. Sometimes Vanilla JS is the Right Choice – 小型工具在性能上可以胜过框架。
  2. Auto‑Detection is Magical UX – 用户喜欢“即开即用”的工具。
  3. Dark Mode Should Be Default – 开发者工具常在夜间使用。
  4. Cloudflare Pages Is Underrated – 对全球用户免费、无限且快速。
  5. 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: 也许可以!在下方留言或通过网站给我发邮件。

Back to Blog

相关文章

阅读更多 »

Python的秘密生活:隐藏的返回

为什么你的 function 结果是 None —— 以及如何修复它。Timothy 看着屏幕笑容满面。他刚刚完成了对 pricing script 的 refactoring,使其变得整洁,……

我能在脑海中看到我的成功

成功的幻象 我看得很清楚。我的 app 已经上线,毫无 bug,用户们赞不绝口。投资者们接连来电。我的 GitHub repo 的 stars 像潮水般涌入。