php로 특정일 기준으로 지난주 월요일과 일요일 구하기

php로 특정일 기준으로 지난주 월요일과 일요일 구하기

QA

php로 특정일 기준으로 지난주 월요일과 일요일 구하기

본문

예를들면

2025-01-14 08:33:00 일 경우에는  2025-01-06(월), 2025-01-12(일)  이렇게 두 날짜를

2025-01-23 12:33:00 일 경우에는  2025-01-13(월), 2025-01-19(일)  이렇게 두 날짜를

 

구할수 있는지요?

 

 

즉, php로 특정날짜를 입력하면 전주의 월요일과 일요일을 추출하고싶습니다.

 

이 질문에 댓글 쓰기 :

답변 3


<?php
$today = '2025-01-14 08:33:00';
echo date('Y-m-d', strtotime('-2 monday', strtotime($today)));
echo date('Y-m-d', strtotime('-1 sunday', strtotime($today)));

간단하게 하시려면 이렇게 하셔도 될 것 같네요.

답변 감사합니다.  정말 간단한 코드라 채택해서 사용해보려고 했는데
정확히 이전주 월요일과 일요일이 출력되는거 같지는 않습니다.
예를 들어보면

$today = '2025-01-13 08:33:00';
echo date('Y-m-d', strtotime('-2 monday', strtotime($today)));
echo "-";
echo date('Y-m-d', strtotime('-1 sunday', strtotime($today)));

날짜를 1월13일로 했을경우 전주 월요일~ 일료일은  2025-01-06 - 2025-01-12 인데
2024-12-30 - 2025-01-12가 출력됩니다.

제가 좀 고민해겠습니다. 감사합니다.

$year = 2025;
    $month = 01;
    $day = 19;

    // 특정 날짜의 타임스탬프값 구하기
    $targetDateTimeStamp = mktime(0, 0, 0, $month, $day, $year);

    // 요일 찾기
    $dayOfWeek = date('w', $targetDateTimeStamp);

    // 하루의 초(second)
    $secondOfOneDay = 60 * 60 * 24;

    switch ($dayOfWeek) {
     case 0:  // 일요일
        $monday = $targetDateTimeStamp-  ($secondOfOneDay * 6);
        $friday = $targetDateTimeStamp ;
        break;
      case 1:  // 월요일
        $monday = $targetDateTimeStamp- ($secondOfOneDay * 7);
        $friday = $targetDateTimeStamp - ($secondOfOneDay * 1);
        break;
      case 2:  // 화요일
        $monday = $targetDateTimeStamp - ($secondOfOneDay * 8);
        $friday = $targetDateTimeStamp - ($secondOfOneDay * 2);
        break;
      case 3:  // 수요일
        $monday = $targetDateTimeStamp - ($secondOfOneDay * 9);
        $friday = $targetDateTimeStamp - ($secondOfOneDay * 3);
        break;
      case 4:  // 목요일
        $monday = $targetDateTimeStamp - ($secondOfOneDay * 10);
        $friday = $targetDateTimeStamp - ($secondOfOneDay * 4);
        break;
      case 5:  // 금요일
       $monday = $targetDateTimeStamp - ($secondOfOneDay * 11);
        $friday = $targetDateTimeStamp - ($secondOfOneDay * 5);
        break;
      case 6:  // 토요일
       $monday = $targetDateTimeStamp - ($secondOfOneDay * 12);
        $friday = $targetDateTimeStamp - ($secondOfOneDay * 6);
        break;
    }

    if (isset($monday) && isset($friday)) {
      echo "{$year}년 {$month}월 {$day}일의 이 전주  월요일과 금요일의 날짜";
      echo '<br>';
      echo '월요일 : ' . date("Y-m-d", $monday);
      echo '<br>';
      echo '일요일 : ' . date("Y-m-d", $friday);
    } else {
      echo "월요일 부터 금요일의 날짜를 입력하세요.";
    }    

자문자답...
이거 완전 노가다네요. <===그렇게 하는 것이 아닙니다

 

답변 미채택 상태로 만들어버린 질문이라 답변 하지않으려다가 답변 드립니다 

-------------------------------------다음처럼 해보세요

last Sunday, last week Monday ㅋ

 

$ddk="2025-01-14 08:33:00"; //  2025-01-06(월), 2025-01-12(일)  
 $dd = strtotime($ddk);
$dd1 = date("Y-m-d", strtotime("last week Monday" ,$dd));
$dd2 = date("Y-m-d", strtotime("last Sunday" ,$dd));

  echo "$dd1 // $dd2 ";

 

$ddk="2025-01-23 12:33:00"; // 2025-01-13(월), 2025-01-19(일)  
 $dd = strtotime($ddk);
$dd1 = date("Y-m-d", strtotime("last week Monday" ,$dd));
$dd2 = date("Y-m-d", strtotime("last Sunday" ,$dd));

  echo "<br> $dd1 //  $dd2";

 

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 127,566 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT