区分 Ticks 与 UtcTicks
确认保存的是 UTC 的 DateTime.Ticks 或 UtcTicks 后再选 UTC。DateTimeOffset.Ticks 只含钟面时间,缺少 Offset 时先用无时区查看;已知偏移可在日期转 Ticks 时补入。
日期与时间
输入 DateTime.Ticks 或含秒的日期,每行一条;先确认 UTC 或无时区语义,再核对转换结果。
输入仅在当前浏览器中处理,不会发送到服务器。
仅解释 DateTime.Ticks;起点为 0001-01-01;每 tick 为 100 纳秒。
每行输入非负十进制整数,或 YYYY-MM-DDTHH:mm:ss,可带 1–7 位小数秒。UTC 模式接受 Z、±HH:mm;省略后缀按 UTC。无时区模式不得带后缀。
无法从整数恢复 Kind。无时区模式仅保留日历字段,不输出 Unix 时间戳;Local 值还需要来源时区,工具不会推断。
日期保留七位小数秒。Unix 整数秒和毫秒向下取整,余数以 tick 为单位单独展示。
最多 1000 个物理行和 100000 个 UTF-16 代码单元。空行会报告错误。
输入内容或载入示例以开始。
.NET Ticks 转换适合排查 C# 日志里的长整数。只显示毫秒的日期查看器可能把不同记录显示成同一时刻;保留七位小数秒,才能看见最后几个 tick 的差别。
先确认字段来自 DateTime.Ticks。整数本身不携带 Kind,数据库版本号、开机计时和文件时间即使长度相近,也不能套用同一套起点与单位。
在 UTC 模式下,.NET Ticks 转换会把 621355968000000001 显示成 1970-01-01T00:00:00.0000001Z。反向使用完整日期,小于一毫秒的那一 tick 也能回到原整数。
无时区值只说明钟面日期,不代表已经确定的瞬间。结果没有 Z,也没有 Unix 字段,避免给缺少来源信息的记录强行套上一个看似合理的时区。
确认保存的是 UTC 的 DateTime.Ticks 或 UtcTicks 后再选 UTC。DateTimeOffset.Ticks 只含钟面时间,缺少 Offset 时先用无时区查看;已知偏移可在日期转 Ticks 时补入。
示例包含最小日期、Unix 纪元后一 tick 和最大日期。预览后点击应用,即可检查七位小数。需要回到原数据时,撤销会同时恢复输入和结果。
自动转换在停止输入约 350 毫秒后执行,关闭后可用按钮或 Ctrl/Cmd + Enter。只有全部行成功且结果未过期时才能反向回填;改方向或语义会立即禁用旧报告导出。
Ticks 转日期和日期转 Ticks 均使用整数运算,不先经过浮点数或毫秒 Date。导出的长整数为 JSON 字符串,防止后续解析器改变末尾数字。
UTC 模式中的 +08:00 日期先换算成 UTC 再计数,不把本机所在时区掺入计算。无后缀日期则按所选语义解释,同一批次采用相同规则。
Ticks 毫秒换算中,10,000 个 tick 才是一毫秒。报告同时保留 Unix 整数秒、整数毫秒及各自余数,纪元前一 tick 不会被误显示为零。
每条结果保留原输入和物理行号,合法行与错误行并存。首次只显示 50 行,每次可再展开 50 行;复制和下载始终包含所有行及错误原因。
选择 Ticks → 日期,并明确时间语义后输入整数。C# 的 new DateTime(ticks) 可恢复日历字段,Kind 默认为 Unspecified;如果来源确定是 UTC,可使用带 DateTimeKind.Utc 的构造函数。
Ticks 反映 DateTime 的钟面字段,Kind 说明这些字段如何解释。因此 DateTime.Now 与 ToUniversalTime() 可以指向同一瞬间,却具有不同的 tick 数。只保存 Ticks 不会同时保存 Kind。
一毫秒等于 10,000 个 tick。直接除以 10,000 得到的是从公元一年起的毫秒数;若要 Unix 毫秒且来源为 UTC,先减去 621355968000000000 再相除。需要保留小数部分时,还要查看余数。
现代日期的 tick 数超出 32 位 int 范围,应在 .NET 中使用 64 位 long。经过把 JSON 数字解析为浮点数的系统时,建议以字符串传递。相对某个基准存差值,只适用于事先明确限制过的范围。
Tick 表示 100 纳秒的增量,可以在 64 位值中覆盖支持的日期范围。表示精度比毫秒细,并不意味着系统时钟每隔 100 纳秒就能提供一个真正的新测量值。
结果与预期不同?