在 PHP 中取得星期資訊是常見需求,date() 函數搭配 w 參數可輕鬆取得數字格式的星期(0=星期日 ~ 6=星期六)。本文提供完整實作範例,包含中文顯示、指定日期判斷、效能優化等實用技巧。
<?php
// 取得今天星期(數字 0-6)
$w = date('w');
// 取得指定日期星期
$timestamp = strtotime('2024-12-25');
$w = date('w', $timestamp);
?>
<?php
$weekArray = ['日', '一', '二', '三', '四', '五', '六'];
$w = date('w');
echo "今天是星期{$weekArray[$w]}"; // 今天是星期三
?>
<?php
$date = new DateTime(); // 當前時間
// $date = new DateTime('2024-12-25'); // 指定日期
$weekArray = ['日', '一', '二', '三', '四', '五', '六'];
$w = (int)$date->format('w');
echo "今天是星期{$weekArray[$w]}";
// 取得完整中文日期
echo $date->format('Y年m月d日 星期') . $weekArray[$w];
?>
<?php
$formatter = new IntlDateFormatter(
'zh_TW', // 繁體中文環境
IntlDateFormatter::FULL, // 完整日期格式
IntlDateFormatter::NONE, // 不顯示時間
'Asia/Taipei', // 時區
IntlDateFormatter::GREGORIAN
);
echo $formatter->format(new DateTime());
// 輸出:2024年12月25日 星期三
?>
此法支援多語系、自動處理閏年、時區,適合國際化專案。
<?php
function isWeekend($timestamp = null): bool {
$timestamp = $timestamp ?? time();
$w = (int)date('w', $timestamp);
return $w === 0 || $w === 6; // 0=週日, 6=週六
}
// 使用範例
if (isWeekend()) {
echo '今天是週末,好好休息!';
} else {
echo '上班日,繼續努力。';
}
// 判斷指定日期
$ts = strtotime('2024-12-28'); // 星期六
var_dump(isWeekend($ts)); // true
?>
strtotime() 呼叫。w(0=週日)vs N(ISO-8601,1=週一~7=週日)。date() 依賴預設時區,請在 php.ini 或程式開頭設定 date_default_timezone_set('Asia/Taipei')。strtotime() 對非標準格式容易失效,建議使用 DateTime::createFromFormat()。判斷星期幾看似簡單,但涉及時區、國際化、效能等細節。建議:簡單專案用陣列對應,國際化專案用 IntlDateFormatter,高頻呼叫注意快取。掌握這些技巧,能讓日期處理更穩健、更專業。