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

PHP 取得昨天、今天、明天日期的標準寫法:DateTime 最佳實踐

     編輯:PHP 相關知識

推薦:使用 DateTime 類別(PHP 5.2+)

舊式 date() + mktime() 易出錯且難閱讀,DateTime 物件導向介面更直觀、可鏈式操作、支援時區。

基本用法

<?php
$today = new DateTime();              // 現在
$yesterday = (clone $today)->modify('-1 day');
$tomorrow  = (clone $today)->modify('+1 day');

echo '昨天:' . $yesterday->format('Y-m-d') . PHP_EOL;
echo '今天:' . $today->format('Y-m-d') . PHP_EOL;
echo '明天:' . $tomorrow->format('Y-m-d') . PHP_EOL;

封裝為函式

function getYesterday(): string {
    return (new DateTime('-1 day'))->format('Y-m-d');
}
function getToday(): string {
    return (new DateTime())->format('Y-m-d');
}
function getTomorrow(): string {
    return (new DateTime('+1 day'))->format('Y-m-d');
}

進階:指定時區

$tz = new DateTimeZone('Asia/Taipei');
$today = new DateTime('now', $tz);
$yesterday = (clone $today)->modify('-1 day');
// 或
$yesterday = new DateTime('-1 day', $tz);

常見相對格式字串

字串含義
+1 day / -1 day後/前一天
+1 week / -1 week後/前一週
first day of this month本月 1 號
last day of next month下月最後一天
monday this week本週一

避坑指南

  • 不要 直接 $today->modify('-1 day') 再用 $today,會改變原物件 → 使用 clone。
  • 不要 用 date('Y-m-d', strtotime('-1 day')),strtotime 在 32 位系統 2038 年後失效,且 DST 切換日易誤差。
  • 儲存資料庫請統一用 UTC,顯示時再轉使用者時區。

效能補充

DateTime 物件建立極輕量,單次請求建立幾十個完全無負擔。若極度追求效能(如批次處理百萬筆),可用 date() + 時間戳,但需自行處理時區與 DST。

總結

// 現代標準寫法
$yesterday = (new DateTime('-1 day'))->format('Y-m-d');
$today     = (new DateTime())->format('Y-m-d');
$tomorrow  = (new DateTime('+1 day'))->format('Y-m-d');

簡潔、安全、可維護,請全面棄用 mktime/strtotime 組合。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved