<?php
function _niceTime($minute) {
$m = $minute - 5;
$date = new DateTime();
$date->setTime(9, 00); // 設置為每天早上 9 點
return date("Y-m-d H:i", strtotime("+$m minute", $date->getTimestamp()));
}
?>
new DateTime() 創建當前日期時間對象。setTime(9, 00) 將時間部分重置為 09:00:00,日期保持不變(即今天上午 9 點)。getTimestamp() 獲取該時間的 Unix 時間戳。strtotime("+$m minute", ...) 在該時間戳基礎上增加 $m 分鐘。date("Y-m-d H:i", ...) 格式化輸出最終日期時間字符串。適用於需要以固定基準時間(如每日營業開始時間 9:00)計算偏移時間的業務,例如:排班系統、定時任務觸發時間計算、優惠券生效時間推算等。
$date->setTimezone(new DateTimeZone('Asia/Shanghai')); 避免服務器時區差異。$minute 為非負整數。<?php
function calculateTimeFromBase(int $offsetMinutes, string $baseTime = '09:00', string $timezone = 'Asia/Shanghai'): DateTime {
$dt = new DateTime('today', new DateTimeZone($timezone));
[$h, $i] = explode(':', $baseTime);
$dt->setTime((int)$h, (int)$i);
$dt->modify("+{$offsetMinutes} minutes");
return $dt;
}
// 使用
$result = calculateTimeFromBase(120); // 今天 9:00 後 120 分鐘
echo $result->format('Y-m-d H:i'); // 2024-01-15 11:00
?>