DateAccount 提供兩個核心方法:
支援的間隔單位($interval):
| 單位 | 說明 |
|---|---|
| yyyy | 年 |
| q | 季 |
| m | 月 |
| y / d / w | 日 / 週 |
| ww | 週(同 w) |
| h | 時 |
| n | 分 |
| s | 秒 |
$temptime = time();
echo strftime("%Hh%M %A %d %b", $temptime); // 當前時間
$date = new DateAccount();
$temptime = $date->DateAdd("n", 50, $temptime); // 加 50 分鐘
echo "";
echo strftime("%Hh%M %A %d %b", $temptime); // 結果時間
輸出:
15h41 Saturday 03 Jun
16h31 Saturday 03 Jun
$current = time();
$date = new DateAccount();
$new = $date->DateAdd("n", 50, $current);
$diff = $date->DateDiff("n", $current, $new);
echo "Interval between two times: $diff"; // 輸出 50
<?php
class DateAccount {
function __construct() {}
function DateAdd($interval, $number, $date) {
$dt = getdate($date);
$hours = $dt["hours"]; $minutes = $dt["minutes"]; $seconds = $dt["seconds"];
$month = $dt["mon"]; $day = $dt["mday"]; $year = $dt["year"];
switch ($interval) {
case "yyyy": $year += $number; break;
case "q": $month += $number * 3; break;
case "m": $month += $number; break;
case "y": case "d": case "w": $day += $number; break;
case "ww": $day += $number * 7; break;
case "h": $hours += $number; break;
case "n": $minutes += $number; break;
case "s": $seconds += $number; break;
}
return mktime($hours, $minutes, $seconds, $month, $day, $year);
}
function DateDiff($interval, $date1, $date2) {
$diff = $date2 - $date1;
switch ($interval) {
case "w": return bcdiv($diff, 604800);
case "d": return bcdiv($diff, 86400);
case "h": return bcdiv($diff, 3600);
case "n": return bcdiv($diff, 60);
case "s": return $diff;
}
}
}
?>
注意:bcdiv 需 BCMath 擴展,若環境不支援可改用 floor($diff / 86400) 等整數除法。