在 PHP 中,处理时间戳和日期格式的转换是常见的需求。下面将介绍如何在毫秒级时间戳和日期格式之间进行互换。
1. 获取当前时间的毫秒级时间戳
可以使用 microtime()
函数获取当前时间的微秒时间戳,然后将其转换为毫秒级时间戳。
示例代码
// 获取当前时间的毫秒级时间戳
$milliseconds = round(microtime(true) * 1000);
echo "当前毫秒级时间戳: " . $milliseconds . "\n";
2. 毫秒级时间戳转换为日期格式
要将毫秒级时间戳转换为日期格式,可以使用 DateTime
类或 date()
函数。
使用 DateTime
类
$milliseconds = 1633036800000; // 示例毫秒级时间戳
$datetime = DateTime::createFromFormat('U.u', sprintf('%d.%03d', floor($milliseconds / 1000), $milliseconds % 1000));
echo "日期格式: " . $datetime->format('Y-m-d H:i:s.u') . "\n"; // 输出:日期格式: 2021-10-01 00:00:00.000
使用 date()
函数
$milliseconds = 1633036800000; // 示例毫秒级时间戳
$seconds = $milliseconds / 1000; // 转换为秒
$date = date('Y-m-d H:i:s', $seconds);
echo "日期格式: " . $date . "\n"; // 输出:日期格式: 2021-10-01 00:00:00
3. 日期格式转换为毫秒级时间戳
要将日期格式转换为毫秒级时间戳,可以使用 strtotime()
函数获取秒级时间戳,然后乘以 1000。
示例代码
$dateString = '2021-10-01 00:00:00'; // 示例日期格式
$timestamp = strtotime($dateString); // 获取秒级时间戳
$milliseconds = $timestamp * 1000; // 转换为毫秒级时间戳
echo "毫秒级时间戳: " . $milliseconds . "\n"; // 输出:毫秒级时间戳: 1633036800000
4. 综合示例
以下是一个完整的示例,演示了如何在毫秒级时间戳和日期格式之间进行互换:
<?php
// 获取当前时间的毫秒级时间戳
$milliseconds = round(microtime(true) * 1000);
echo "当前毫秒级时间戳: " . $milliseconds . "\n";
// 毫秒级时间戳转换为日期格式
$datetime = DateTime::createFromFormat('U.u', sprintf('%d.%03d', floor($milliseconds / 1000), $milliseconds % 1000));
echo "日期格式: " . $datetime->format('Y-m-d H:i:s.u') . "\n";
// 日期格式转换为毫秒级时间戳
$dateString = '2021-10-01 00:00:00'; // 示例日期格式
$timestamp = strtotime($dateString);
$milliseconds = $timestamp * 1000;
echo "毫秒级时间戳: " . $milliseconds . "\n"; // 输出:毫秒级时间戳: 1633036800000
?>