as3时间戳转换日期:参数3的计算结果与对照
把参数 3 代入 as3时间戳转换日期 的换算,得到 Unix 秒值 3、毫秒值 3000,对应 ISO 时间 1970-01-01T00:00:03.000Z 与 UTC 时间 1970-01-01 00:00:03,也就是 1970 年 1 月 1 日零时零分 3 秒。
在线工具时间戳转换
参数 3 换算出来的四个字段
同一次换算会给出四个值,它们描述的是同一个时刻,只是单位与写法不同。
- Unix 秒值:3,表示从 1970 年 1 月 1 日 00:00:00 UTC 起走过的秒数。
- 毫秒值:3000,即 3 秒换算成毫秒。
- ISO 格式:1970-01-01T00:00:03.000Z,末尾的 Z 表示 UTC。
- UTC 格式:1970-01-01 00:00:03,去掉了 T 和毫秒部分,方便阅读。
这四个字段之间没有歧义,差别只在精度和书写习惯。AS3 里用 Date 对象处理时间时,内部往往按毫秒计数,所以看到 3000 这个值并不奇怪,它和秒值 3 是同一回事。
从 3 到 1970-01-01 00:00:03 的换算路径
换算的起点是 Unix 纪元,也就是 1970 年 1 月 1 日 00:00:00 UTC。参数 3 表示在纪元之后第 3 秒,因此日期部分不发生变化,仍然是 1970 年 1 月 1 日;时间部分从 00:00:00 往后推 3 秒,落在 00:00:03。
如果把它拆成毫秒,3 秒等于 3000 毫秒,这也是毫秒字段的来源。ISO 字符串在秒后面补上 .000,表示毫秒位为零,与 3000 毫秒的表述一致。UTC 字符串则省略毫秒,只保留到秒。
需要核对时,可以打开时间戳转换工具,把 3 填进去,观察四个字段是否与上述结果一致。
把 3 和相邻参数放在一起看
单独看 3 不够直观,和相邻参数对照更容易理解时间戳的线性关系。参数 2 得到 1970-01-01 00:00:02,参数 4 得到 1970-01-01 00:00:04,三个结果依次相差 1 秒,日期部分始终是 1970 年 1 月 1 日。
再看参数 663,结果变成 1970-01-01 00:11:03,时间部分多出 11 分钟;参数 3603 则跨到 1970-01-01 01:00:03,小时位发生变化。这说明秒值累加到 60 的整数倍时会进位到分钟,累加到 3600 的整数倍时会进位到小时。
负数方向也有对照:参数 -657 得到 1969-12-31 23:49:03,参数 -3597 得到 1969-12-31 23:00:03,日期退到 1969 年 12 月 31 日。正负两侧的换算规则相同,只是方向相反。
AS3 项目里什么时候会碰到 3 这样的秒值
AS3 中 Date 对象的 time 属性以毫秒为单位,而不少后端接口或日志字段习惯传秒值。如果接口返回的是 3,直接塞进 Date 构造函数会被当成 3 毫秒,显示出来几乎是纪元起点。正确做法是先判断单位:秒值乘以 1000 再交给 Date,或者用工具先确认结果。
参数 3 这种小数值在真实业务里不常见,但用它来验证换算逻辑很合适——结果简单,容易心算核对。把 3 换成 663 或 3603,就能观察分钟位和小时位的变化,帮助确认代码里有没有漏乘 1000。
换算时容易忽略的两点
第一是时区。上面给出的 UTC 时间 1970-01-01 00:00:03 不带时区偏移,如果直接拿去和本地时间比较,会差出若干小时。AS3 的 Date 在输出字符串时可能按本地时区处理,所以核对时先确认双方用的是 UTC 还是本地时间。
第二是单位混用。秒值和毫秒值相差 1000 倍,3 和 3000 看起来都合理,但代入后结果完全不同。看到 1970-01-01T00:00:03.000Z 这样的 ISO 字符串时,可以反推原始输入是秒值 3;如果输入的是 3000 毫秒,换算后同样得到这个时刻,但字段里的 Unix 秒值仍然是 3。
总结
参数 3 代入 as3时间戳转换日期 后,得到 Unix 秒值 3、毫秒值 3000,对应 1970-01-01T00:00:03.000Z 与 1970-01-01 00:00:03。核对时留意秒与毫秒的单位差异,以及 UTC 与本地时区的区别。
相关文章
- jq13位时间戳转换成日期:参数结果核对
说明参数13按Unix秒转换后的UTC日期,并区分数值13与13位毫秒时间戳。
- jq12位时间戳转换成日期:12 对应哪一刻?
参数 12 按 Unix 时间戳换算,对应 1970-01-01 00:00:12(UTC),毫秒数为 12000。本文说明结果含义、换算步骤与相邻参数对照。
- jdk8将时间戳转换成instant:8秒的转换结果
在JDK8中把时间戳8转换为Instant,结果是1970-01-01T00:00:08Z,对应UTC时间00:00:08,毫秒值8000。
- java时间戳转换日期格式14位:先分清秒与毫秒
从14位时间戳的位数困惑讲起,用实例说明秒与毫秒的差别,并给出Java格式化日期与排查错误的做法。
- java时间戳转换成时间6:从参数6看懂秒级换算
以参数6为例,讲清Java时间戳换算成时间的思路:秒与毫秒的区别、UTC与本地时区、边界值与常见报错排查。
常见问题
Q1参数 3 换算成日期后,日期部分为什么是 1970 年 1 月 1 日?
因为 Unix 纪元从 1970 年 1 月 1 日 00:00:00 UTC 开始,参数 3 只表示纪元之后第 3 秒,还没有累积到改变日期的程度,所以日期仍是 1970 年 1 月 1 日。
Q23 和 3000 在 as3时间戳转换日期 里结果一样吗?
对应的是同一个时刻,但单位不同。3 是秒值,3000 是毫秒值,换算后都落在 1970-01-01T00:00:03.000Z。字段里的 Unix 秒值会显示 3,毫秒值显示 3000。
Q3参数 3 的结果和参数 4 的结果差多少?
参数 3 对应 1970-01-01 00:00:03,参数 4 对应 1970-01-01 00:00:04,两者相差 1 秒,日期部分相同。
Q4在 AS3 里拿到秒值 3 应该怎么处理?
AS3 的 Date 以毫秒计数,直接把 3 传进去会被当作 3 毫秒。通常先把秒值乘以 1000 得到 3000,再交给 Date,或者先用转换工具确认目标时间。