PHP时间处理类,包含了常见的日期和时间操作方法。
<?php
class TimeUtils
{
/**
* 获取当前时间戳(秒)
*
* @return int 当前时间的Unix时间戳(秒)
*/
public static function getCurrentTimestamp(): int
{
return time();
}
/**
* 获取当前时间戳(毫秒)
*
* @return float 当前时间的Unix时间戳(毫秒)
*/
public static function getCurrentTimestampInMilliseconds(): float
{
return microtime(true) * 1000;
}
/**
* 格式化时间戳为指定格式的日期时间字符串
*
* @param int $timestamp 时间戳(秒)
* @param string $format 日期时间格式,如 'Y-m-d H:i:s' 或 'd/m/Y'
* @return string 格式化后的日期时间字符串
*/
public static function formatTimestamp(int $timestamp, string $format = 'Y-m-d H:i:s'): string
{
return date($format, $timestamp);
}
/**
* 将日期时间字符串解析为时间戳
*
* @param string $dateTimeStr 日期时间字符串,如 '2023-04-5 18:30:45'
* @param string $format 日期时间字符串的格式,如 'Y-m-d H:i:s'
* @return int 解析后的时间戳(秒)
* @throws Exception 如果无法解析日期时间字符串,抛出异常
*/
public static function parseDateTimeToTimestamp(string $dateTimeStr, string $format = 'Y-m-d H:i:s'): int
{
$timestamp = strtotime($dateTimeStr);
if ($timestamp === false) {
throw new Exception("Failed to parse datetime string: '{$dateTimeStr}' with format '{$format}'");
}
return $timestamp;
}
/**
* 计算两个时间戳之间的差值(单位:秒)
*
* @param int $timestamp1 第一个时间戳
* @param int $timestamp2 第二个时间戳
* @return int 两个时间戳之间的时间差(秒)
*/
public static function calculateTimeDifference(int $timestamp1, int $timestamp2): int
{
return abs($timestamp1 - $timestamp2);
}
/**
* 计算两个时间戳之间的差值(单位:天)
*
* @param int $timestamp1 第一个时间戳
* @param int $timestamp2 第二个时间戳
* @return float 两个时间戳之间的时间差(天),保留两位小数
*/
public static function calculateTimeDifferenceInDays(int $timestamp1, int $timestamp2): float
{
return self::calculateTimeDifference($timestamp1, $timestamp2) / (60 * 60 * 24);
}
}
// 示例用法:
$nowTimestamp = TimeUtils::getCurrentTimestamp();
echo "Current timestamp: {$nowTimestamp}\n";
$formattedNow = TimeUtils::formatTimestamp($nowTimestamp, 'd/m/Y');
echo "Formatted current time: {$formattedNow}\n";
$parsedTimestamp = TimeUtils::parseDateTimeToTimestamp('2023-07-9 15:45:00');
echo "Parsed timestamp: {$parsedTimestamp}\n";
$timeDifference = TimeUtils::calculateTimeDifference($nowTimestamp, $parsedTimestamp);
echo "Time difference in seconds: {$timeDifference}\n";
$timeDifferenceInDays = TimeUtils::calculateTimeDifferenceInDays($nowTimestamp, $parsedTimestamp);
echo "Time difference in days: {$timeDifferenceInDays}\n";
本文链接地址:https://blog.yunshang6.com/103.html 转载请注明来源
评论(0)