在 PHP 中取得星期幾是常見需求,date() 函式提供多種格式化參數,搭配簡單陣列即可輸出中文「星期一」至「星期日」。本文整理三種常用情境:取得英文、數字、中文星期,以及指定日期查詢。
<?php
// 英文完整名稱:Sunday, Monday...
echo date('l');
// 數字格式:0(星期日) ~ 6(星期六)
echo date('w');
?>
注意: w 回傳 0 代表星期日,1 代表星期一,以此類推。
建立對照陣列,以 date('w') 為索引即可:
<?php
$weekArray = ['日', '一', '二', '三', '四', '五', '六'];
echo '星期' . $weekArray[date('w')]; // 例:星期三
?>
date() 第二個參數接受 Unix 時間戳,搭配 strtotime() 解析日期字串:
<?php
$weekArray = ['日', '一', '二', '三', '四', '五', '六'];
// 指定日期字串(支援 Y-m-d、Y/m/d 等常見格式)
$targetDate = '2011-11-11';
$timestamp = strtotime($targetDate);
echo $targetDate . ' 是 星期' . $weekArray[date('w', $timestamp)];
// 輸出:2011-11-11 是 星期五
?>
<?php
/**
* 取得指定日期的中文星期
* @param string $dateStr 日期字串,預設為今天
* @param string $prefix 前綴文字,預設「星期」
* @return string 例:星期三
*/
function getChineseWeekday($dateStr = 'today', $prefix = '星期') {
$weekArray = ['日', '一', '二', '三', '四', '五', '六'];
$timestamp = ($dateStr === 'today') ? time() : strtotime($dateStr);
return $prefix . $weekArray[date('w', $timestamp)];
}
// 使用範例
echo getChineseWeekday(); // 今天
echo getChineseWeekday('2024-12-25'); // 指定日期
?>
DateTime::createFromFormat() 指定格式解析,較嚴謹。date_default_timezone_set('Asia/Taipei')。PHP 取得星期幾核心在於 date('w') 取得 0-6 數字,再透過陣列對照輸出中文。指定日期只需搭配 strtotime() 轉換時間戳即可。建議將常用邏輯封裝成函式,專案中隨處可用,減少重複程式碼。