在 PHP 和 JavaScript 中获取时间戳的方式有所不同,导致它们的长度和单位可能不一致。以下是主要区别和解决方法:
time()
和 JavaScript Date.parse(new Date())
的区别语言/方法 | 返回值 | 单位 | 示例 |
---|---|---|---|
PHP time() |
当前 Unix 时间戳(秒) | 秒(10位) | 1651234567 |
JS Date.parse(new Date()) |
当前 Unix 时间戳(毫秒) | 毫秒(13位) | 1651234567000 |
PHP time()
返回的是 秒级时间戳(10位)。
JS Date.parse(new Date())
返回的是 毫秒级时间戳(13位)。
// 方法1:microtime(true) 返回秒 + 微秒,乘以 1000 得到毫秒
$milliseconds = round(microtime(true) * 1000);
echo $milliseconds; // 1651234567000(13位)
// 方法2:直接用 time() * 1000(但精度不如 microtime)
$milliseconds = time() * 1000;
// 方法1:Math.floor(Date.now() / 1000)
const timestampSec = Math.floor(Date.now() / 1000); // 1651234567(10位)
// 方法2:Math.floor(new Date().getTime() / 1000)
const timestampSec = Math.floor(new Date().getTime() / 1000);
转换方式 | 代码示例 |
---|---|
PHP → JS(毫秒) | $jsTimestamp = time() * 1000; |
JS → PHP(秒) | $phpTimestamp = floor($jsTimestamp / 1000); |
PHP time()
返回 秒级(10位)。
JS Date.parse(new Date())
返回 毫秒级(13位)。
统一方式:
PHP → 毫秒:microtime(true) * 1000
JS → 秒:Math.floor(Date.now() / 1000)
这样就能确保 PHP 和 JavaScript 的时间戳一致,便于前后端交互。