zhangjingyu
“这里的 21600000 是毫秒。为什么是毫秒?”(引用内容)这是一个非常基础但极其重要的问题。答案是:因为 JavaScript(JS)这门语言在处理时间时,底层标准就是按“毫秒”计算的。
我们可以从三个层面来理解:
1. JavaScript 的 Date 对象就是这么设计的
在 JS 里,获取当前时间最常用的代码是 new Date().getTime()(或者简写为 Date.now())。
它返回的不是我们平常看到的日期(比如 2023年10月26日),而是一个时间戳——即从 1970年1月1日 00:00:00 UTC(计算机的“纪元时间”)到现在的总毫秒数。
比如现在的时间戳大概是 1698300000000,这么长的一串数字,单位就是毫秒。我们用这个时间戳去减缓存里的时间戳,得出的差值自然也是毫秒。
2. 为什么 JS 要用毫秒而不是秒?
精度更高:在网页开发和动画中,经常需要精确到几十毫秒的操作(比如 setTimeout(..., 50) 就是 50 毫秒后执行)。如果用秒做基础单位,就无法表达这种高精度时间。
行业标准:几乎所有的前端编程语言(包括 Java、C# 的某些时间库)在处理底层时间戳时,默认都使用毫秒,这已经成为了一种通用的技术共识。
3. 如果是 PHP(服务器端)就不一样了
如果你是在写后台的 PHP 代码,情况就反过来了。PHP 的 time() 函数返回的是秒(比如 1698300000)。
这就是为什么很多人在写代码时容易出错:PHP 里的 86400 是 1 天(秒),但在 JS 里写 86400 只是 86.4 秒。

