獲取當天是本月的第幾周

華賢發表於2021-07-07

strtotime(“$firstDay + 1 month -1 day”) 這樣的寫法會有問題,大家可以去鳥哥部落格看看

令人困惑的strtotime

<?php
/**
 * 獲取當天是本月的第幾周
 * 
 * @return int
 * @author Henry
 */
 public function getWeek(): int
 {
     $todayW = date('W', strtotime('now')); //獲取當前週數
     //$eomW = date('W', strtotime("$firstDay + 1 month -1 day")); 寫法有問題
     $eomW = date('W', strtotime('last day of')); //獲取月尾週數
     $weekSum = floor(date('t') / 7); //月份總天數 / 7 = 本月總週數

    //本月總週數 - (本月尾週數 - 當前週數) + 1
    $week = intval(($weekSum - ($eomW - $todayW)) + 1);

    return $week;
 }

/*
 * 寫法不夠簡潔 v1.0
public function getWeekV1(): int
{
    $totalDay = date('t'); //月份總天數
    $today = date('Y-m-d'); //月份中的第幾天
    $todayW = date('W', strtotime($today)); //獲取當前週數
    $firstDay = date('Y-m-01'); //本月第一天

    $eomW = date('W', strtotime("$firstDay + 1 month -1 day")); //這個月最後一天的週數
    $weekSum = floor($totalDay / 7); //本月總週數
    //本月總週數 - (本月尾週數 - 當前週數) + 1
    $week = intval(($weekSum - ($eomW - $todayW)) + 1);
    return $week;
}
*/
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章