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

PHP 日期時間函數完整指南:mktime、time、date、getdate、checkdate、strtotime 實戰詳解

     編輯:PHP 綜合知識

日期時間處理是業務系統核心需求,PHP 提供豐富的函數族支援時間戳轉換、格式化輸出、驗證、運算等操作。本文系統整理核心函數與實戰模式。

核心函數對照

函數功能回傳值關鍵參數
time()當前 Unix 時間戳int (秒數)無
mktime()指定日期時間轉時間戳int / false時、分、秒、月、日、年
date()格式化時間戳為字串string格式字串、時間戳
getdate()時間戳解析為關聯陣列array時間戳 (預設 now)
checkdate()驗證日期合法性bool月、日、年
strtotime()英文文本解析為時間戳int / false時間字串、基準時間
date_default_timezone_set()設定預設時區bool時區識別字

time() 與 mktime() 基礎用法

<?php
// 當前時間戳
echo time(); // 1704067200

// 格式化輸出
echo date('Y-m-d H:i:s', time()); // 2024-01-01 12:00:00

// 指定日期轉時間戳
$ts = mktime(12, 30, 0, 1, 1, 2024); // 2024-01-01 12:30:00
echo date('Y-m-d H:i:s', $ts);
?>

date() 格式字符完整表

字符含義範例
Y4 位數年2024
y2 位數年24
m月份 (01-12)01
n月份 (1-12)1
d日期 (01-31)01
j日期 (1-31)1
H24 小時 (00-23)12
h12 小時 (01-12)12
i分鐘 (00-59)30
s秒 (00-59)00
w星期 (0-6, 0=星期日)1
z一年中的第幾天 (0-365)0

getdate() 解析時間組件

<?php
$arr = getdate();
echo "{$arr['year']}-{$arr['mon']}-{$arr['mday']}"; // 2024-1-1
echo "{$arr['hours']}:{$arr['minutes']}:{$arr['seconds']}"; // 12:30:00
echo "今天是一年中的第 {$arr['yday']} 天"; // 第 0 天
echo "星期{$arr['wday']}"; // 星期 1
echo "月份名稱:{$arr['month']}"; // January
?>

checkdate() 日期驗證

<?php
var_dump(checkdate(2, 29, 2024)); // true (閏年)
var_dump(checkdate(2, 29, 2023)); // false (平年)
var_dump(checkdate(13, 1, 2024)); // false (月份超範圍)
?>

strtotime() 文本解析神器

<?php
echo strtotime('now');                    // 當前時間戳
echo strtotime('+1 day');                 // 明天這時
echo strtotime('next Monday');            // 下週一
echo strtotime('first day of next month'); // 下月 1 號
echo strtotime('2024-12-25 10:00:00');    // 指定格式

// 時間比較:必須轉時間戳
$t1 = strtotime('2024-01-01');
$t2 = strtotime('2024-12-31');
if ($t1 < $t2) echo 't1 早於 t2';
?>

實戰:倒計時器

<?php
$now = time();
$target = strtotime('2025-01-01 00:00:00');
$diff = $target - $now;
$days = floor($diff / 86400);
$hours = floor(($diff % 86400) / 3600);
$mins = floor(($diff % 3600) / 60);
$secs = $diff % 60;
echo "距離 2025 年還有 {$days} 天 {$hours} 時 {$mins} 分 {$secs} 秒";
?>

時區處理關鍵

<?php
// 必須在日期函數前設定
date_default_timezone_set('Asia/Taipei'); // 或 PRC, Asia/Shanghai
echo date('Y-m-d H:i:s'); // 正確的本地時間

// 獲取所支援時區
print_r(DateTimeZone::listIdentifiers());
?>

現代化:DateTime 類 (PHP 5.2+)

<?php
$dt = new DateTime('now', new DateTimeZone('Asia/Taipei'));
echo $dt->format('Y-m-d H:i:s');

$dt->modify('+1 week');
echo $dt->format('Y-m-d'); // 一週後

$diff = $dt->diff(new DateTime('2024-01-01'));
echo $diff->format('%a 天'); // 相差天數

// 不可變版本 (PHP 5.5+)
$dt = new DateTimeImmutable('now');
$nextWeek = $dt->modify('+1 week'); // 回傳新物件,原物件不變
?>

掌握時間戳與格式化的雙向轉換、時區設定、DateTime 物件導向操作,是處理複雜業務時間邏輯的基石。

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