萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> PHP 程式設計

PHP 判斷星期幾的完整實作指南

前言

在 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]}"; // 今天是星期三
?>

方法二:DateTime 物件導向寫法(PHP 5.2+)

<?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];
?>

方法三:IntlDateFormatter 國際化支援(PHP 5.3+,需 intl 擴充)

<?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
?>

效能優化建議

  • 避免重複呼叫 date():若同一請求需多次取得星期,先存入變數。
  • 大量日期判斷時:考慮預先計算時間戳,減少 strtotime() 呼叫。
  • 快取陣列定義:$weekArray 定義為靜態常數或類常數,避免重複建立。

常見錯誤提醒

  1. 混淆 w 與 N:w(0=週日)vs N(ISO-8601,1=週一~7=週日)。
  2. 時區未設定:date() 依賴預設時區,請在 php.ini 或程式開頭設定 date_default_timezone_set('Asia/Taipei')。
  3. 字串日期解析失敗:strtotime() 對非標準格式容易失效,建議使用 DateTime::createFromFormat()。

結語

判斷星期幾看似簡單,但涉及時區、國際化、效能等細節。建議:簡單專案用陣列對應,國際化專案用 IntlDateFormatter,高頻呼叫注意快取。掌握這些技巧,能讓日期處理更穩健、更專業。

copyright © 萬盛學電腦網 all rights reserved