首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP DateTime::setTime 設置固定時間示例:每天上午 9 點偏移計算

     編輯:PHP 綜合知識

代碼片段

<?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)計算偏移時間的業務,例如:排班系統、定時任務觸發時間計算、優惠券生效時間推算等。

改進建議

  1. 增加時區設置:$date->setTimezone(new DateTimeZone('Asia/Shanghai')); 避免服務器時區差異。
  2. 參數驗證:確保 $minute 為非負整數。
  3. 返回 DateTime 對象而非字符串,便於後續鏈式操作。

改進版

<?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
?>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved