时间

4 tools

ToolDeck 的时间工具让您可以直接在浏览器中转换 Unix 时间戳、解析 cron 表达式、可视化生成 cron 计划,以及验证 cron 语法。时间戳转换器在 Unix 纪元值与人类可读日期之间进行转换,支持所有主流格式。Cron 表达式解析器将 cron 字符串分解为通俗易懂的描述,并预览即将执行的时间。Cron 表达式生成器通过分步可视化界面构建 cron 表达式,无需手动编辑。Cron 表达式验证器检查 cron 语法,并逐字段显示各组件的详细分解。所有处理均在浏览器本地运行,无需服务器往返,无需注册账号,不收集任何数据。

在从日志或 API 中转换纪元值时使用时间戳转换器,使用Cron 表达式解析器将现有计划解码为通俗描述,使用Cron 表达式生成器可视化构建新表达式,或使用Cron 表达式验证器在部署到生产环境前验证语法。

什么是时间工具?

时间工具解决了开发者在处理日期、时间戳和定时执行时面临的实际问题。Unix 时间戳出现在数据库列、API 响应、日志文件和 JWT 声明中。在事故处理期间读取像 1717200000 这样的原始值需要将其转换为人类可读的日期。Cron 表达式出现在 CI/CD 配置、Kubernetes 清单和服务器 crontab 中。写出 0 9 * * 1-5 并确认它在工作日(而非周末)上午 9 点触发,需要借助解析器或验证器。

时间工具涵盖两个独立领域。时间戳转换处理 Unix 纪元值(自 1970-01-01 00:00:00 UTC 起的秒或毫秒)与格式化日期字符串之间的互转。主要涉及的标准有:ISO 8601(国际标准化组织定义的国际日期/时间格式)、RFC 3339(IETF 发布的 ISO 8601 互联网应用规范)和 RFC 2822(用于邮件头和 HTTP 的日期格式)。Cron 表达式工具涵盖对五字段计划语法的解析、生成和验证——该语法最初由 POSIX(IEEE Std 1003.1)定义,如今被 crontab、systemd 定时器、GitHub Actions、Kubernetes CronJob 以及 AWS EventBridge 和 Google Cloud Scheduler 等云调度器所使用。

开发者在调试(从日志或数据库行中转换时间戳)、部署(在上线前编写并验证 cron 计划)以及代码审查(确认同事的 cron 表达式与预期计划一致)时都会用到这些工具。QA 工程师使用时间戳转换来验证 API 响应中的日期值是否正确。DevOps 工程师使用 cron 工具设置备份计划、日志轮转和证书续期任务。

为什么在 ToolDeck 上使用时间工具?

ToolDeck 的时间工具完全在浏览器中运行。时间戳和 cron 表达式通过 JavaScript 在本地处理,不会有任何数据离开您的设备。每个工具专注于单一任务,无需注册流程,无速率限制,即开即用。

🔒
纯浏览器处理
所有转换和验证均通过 JavaScript 在您的设备上执行。无 API 调用,无服务器日志,无数据留存。生产数据库中的时间戳和内部 cron 计划始终保留在您的设备上。
即时结果
粘贴 Unix 时间戳或 cron 表达式,立即查看结果。无网络延迟,无队列,无加载等待。
📐
符合标准的输出
时间戳转换输出 ISO 8601(RFC 3339)和 RFC 2822 格式。Cron 解析支持 POSIX 五字段格式,以及秒字段、L(最后)、W(最近工作日)和 #(第 N 个工作日)等常见扩展字符。
🔓
无需注册账号
打开页面即可开始使用。无需注册,无需 API 密钥,无使用上限。将工具加入书签,随时取用。

时间工具使用场景

时间戳和 cron 问题在后端、DevOps 和 QA 工作中频繁出现。

日志分析
将应用日志中的纪元时间戳转换为可读日期,以便在事故调查期间关联事件。快速判断一个 10 位或 13 位的值是秒还是毫秒。
CI/CD 定时任务
在提交之前,为 GitHub Actions 工作流、Jenkins 流水线或 GitLab CI 计划生成并验证 cron 表达式。预览接下来五次执行时间,确认计划无误。
Kubernetes CronJob 配置
解析 cron 表达式以预览下次运行时间,确认其与预期的 Kubernetes CronJob 计划一致。
数据库调试
在排查数据问题时,将数据库列中存储的 Unix 时间戳转换为人类可读的日期。
监控与告警
为 Prometheus 告警规则、Grafana 报表计划或 PagerDuty 维护窗口编写 cron 表达式。在将其添加到 Terraform 或 Helm 配置之前验证语法。
API 响应检查
解码 REST API 返回的纪元时间戳,验证 created_at、updated_at 和 expires_at 字段是否包含预期值。

时间格式与 Cron 语法参考

两个领域需要了解:API、数据库和日志中使用的时间戳格式;以及 Unix cron、Kubernetes、GitHub Actions 和云调度器使用的 cron 表达式语法。

常用时间戳格式

格式示例标准 / 备注
1717200000Unix 秒POSIX / IEEE Std 1003.1
1717200000000Unix 毫秒JavaScript Date.now(), Java
2024-06-01T00:00:00.000ZUTC 含毫秒ISO 8601 / RFC 3339
2024-06-01T00:00:00+02:00含 UTC 偏移量ISO 8601 / RFC 3339
Sat, 01 Jun 2024 00:00:00 +0000邮件 / HTTP 头RFC 2822
2024-06-01仅日期ISO 8601 (calendar date)

Cron 表达式字段

字段允许值特殊字符
分钟0–59* , - /
小时0–23* , - /
月份中的日期1–31* , - / ? L W
月份1–12 or JAN–DEC* , - /
星期几0–6 or SUN–SAT* , - / ? L #

标准五字段 cron(从分钟到星期几)由 POSIX(IEEE Std 1003.1)定义,被 crontab、systemd、Kubernetes CronJob、GitHub Actions 和大多数 CI/CD 平台所使用。Quartz 和 Spring 等系统添加了第六个秒字段,支持按秒执行。AWS EventBridge 使用带年份字段的六字段变体。L(最后)、W(最近工作日)和 #(第 N 次出现)字符是 Quartz 兼容系统支持的扩展,POSIX cron 不支持。

如何选择合适的时间工具

每个时间工具处理不同的任务;四个工具也可以在单一工作流中组合使用。每当在日志、API 响应或数据库列中遇到原始纪元值时,使用时间戳转换器。将 cron 工具配合使用——用生成器构建表达式,用解析器预览即将运行的时间,用验证器确认语法——在将计划提交到清单或配置文件之前完成验证。

  1. 1
    如果您需要 将 Unix 时间戳转换为可读日期,或反向转换时间戳转换器
  2. 2
    如果您需要 了解现有 cron 表达式的含义,并查看下次运行时间Cron 表达式解析器
  3. 3
    如果您需要 通过可视化界面从头构建新的 cron 表达式Cron 表达式生成器
  4. 4
    如果您需要 检查 cron 表达式的语法是否有效,并逐字段查看详情Cron 表达式验证器

完整的 cron 工作流:在生成器中构建表达式,在解析器中预览下次运行时间,在验证器中确认语法——然后再提交到清单或 crontab。如果您在调试来自 API 或数据库的时间戳,时间戳转换器同时支持秒和毫秒 Unix 时间戳,并输出 ISO 8601、RFC 2822 和本地化格式的日期。时间戳转换器对 JWT 检查也很有用:JSON Web Token 中的 exp(过期时间)和 iat(签发时间)声明是 Unix 秒时间戳,将任意一个值粘贴到转换器中,即可直观看到确切的签发时间或过期窗口,无需编写任何代码。

常见问题

什么是 Unix 时间戳?
Unix 时间戳是自 1970-01-01 00:00:00 UTC(即 Unix 纪元)起经过的秒数(或毫秒数,取决于系统)。它与时区无关:同一个时间戳在全球任何地方都指代同一个绝对时刻。JavaScript 使用毫秒时间戳(Date.now()),而大多数 Unix 工具和数据库使用秒。
什么是 cron 表达式?
cron 表达式是由五个空格分隔字段组成的字符串,用于定义周期性计划:分钟、小时、月份中的日期、月份和星期几。该格式由 Unix Version 7(1979 年)引入,现被 crontab、systemd 定时器、Kubernetes CronJob、GitHub Actions、AWS EventBridge 及众多其他调度器所使用。每个字段接受单个值(5)、范围(1-5)、列表(1,3,5)、步长值(*/15)和通配符(*)。例如,30 9 * * 1-5 表示工作日 UTC 上午 9:30。
如何在秒和毫秒时间戳之间转换?
将秒时间戳乘以 1000 可得毫秒。将毫秒时间戳除以 1000(取整)可得秒。秒时间戳通常为 10 位,例如 1717200000;毫秒时间戳为 13 位,例如 1717200000000。混淆两者是最常见的时间戳错误之一。
cron 表达式中的 */5 是什么意思?
*/5 语法表示在指定字段中“每隔 5 个值”执行一次。在分钟字段中,*/5 将在第 0、5、10、15、20、25、30、35、40、45、50 和 55 分钟运行任务。步长运算符(/)也适用于范围:1-30/5 表示从第 1 分钟到第 30 分钟,每隔 5 分钟执行一次。
为什么应该以 UTC 存储时间戳?
以 UTC 存储消除了夏令时切换、服务器时区不一致以及跨地区数据聚合带来的歧义。仅在显示层(UI 或报表渲染步骤)将时间转换为本地时间。当时间戳以本地时间存储时,夏令时切换会产生时间间隙和重叠:2:30 AM 可能不存在(时钟拨快)或出现两次(时钟拨回)。UTC 没有此类切换。这一做法在分布式系统中已是通行规范,也是 W3C 日期和时间格式说明所推荐的方式。
什么是 ISO 8601?
ISO 8601 是日期和时间字符串格式的国际标准。最常见的形式是 YYYY-MM-DDTHH:MM:SS.sssZ,其中 Z 后缀表示 UTC。ISO 8601 字符串按字典序排序时也按时间顺序排列,这使其成为日志文件、数据库索引和 API 响应的理想选择。
cron 表达式能每秒运行吗?
标准五字段 cron 不支持亚分钟级调度。最小间隔为每分钟一次(在分钟字段使用 *)。Spring 的 @Scheduled 和 Quartz 等系统添加了第六个秒字段,支持按秒执行。Kubernetes CronJob 和 crontab 不支持秒字段。
什么是 2038 年问题?
将 Unix 时间戳存储为 32 位有符号整数的系统将在 2038-01-19 03:14:07 UTC 时发生溢出。32 位有符号整数的最大值为 2,147,483,647,对应的正是那个时刻。溢出后,计数器将回绕为一个代表 1901 年 12 月某日期的大负数。现代 64 位系统和语言——JavaScript、Python 3、Go、Rust——不受此影响。旧版嵌入式设备、ext3 文件系统时间戳、较旧的 MySQL TIMESTAMP 列以及部分二进制协议仍面临风险。