티스토리 뷰

반응형

웹 개발을 하다 보면 특정 날짜를 기준으로 이전 날짜나 특정 조건을 만족하는 날짜를 계산해야 하는 경우가 종종 있다. 예를 들어, 특정 월의 첫 번째 날에서 더 이전인 날짜를 구하는 상황을 상상해보자. 이번 글에서는 PHP를 사용하여 전달의 첫날에서 전전달의 29일로 날짜를 변경하는 방법을 쉽게 이해할 수 있도록 설명해보겠다.

 


전달의 1일 구하기

PHP에서 날짜 계산은 매우 간단하다. 우선, 특정 월의 첫날을 구하는 방법을 알아보자. PHP의 date와 strtotime 함수를 활용하면 원하는 날짜를 간단히 계산할 수 있다.

다음은 전달의 1일을 계산하는 코드이다:

$previousMonthFromDate = date("Y-m-01", strtotime($previousMonth . '01'));

위 코드에서 $previousMonth는 우리가 기준으로 삼는 월이다. 예를 들어 $previousMonth = "2024-01";이라면, strtotime($previousMonth . '01')는 "2024-01-01"이라는 날짜를 만든다. 이후 date("Y-m-01", ...)를 사용하여 해당 월의 1일을 정확히 반환한다. 이렇게 하면 항상 특정 월의 첫 번째 날짜를 쉽게 구할 수 있다.


전전달의 29일로 변경하기

이제 위에서 계산한 전달의 1일을 기준으로 더 이전인 전전달의 29일로 날짜를 설정해보자. 이를 위해 strtotime 함수와 추가적인 계산을 사용한다. 아래는 그 코드이다:

// 전달의 1일 구하기
$previousMonthFromDate = date("Y-m-01", strtotime($previousMonth . '01'));

// 전전달의 29일 구하기
$twoMonthsAgoDate = date("Y-m-29", strtotime("-1 month", strtotime($previousMonthFromDate)));

echo $twoMonthsAgoDate;

이 코드는 간단하지만 강력하다. $previousMonthFromDate로 전달의 1일을 먼저 계산한 후, strtotime("-1 month", ...)를 사용하여 한 달 전으로 이동한다. 이 결과는 전전달의 1일이 된다. 여기에서 다시 date("Y-m-29", ...)를 적용하면 전전달의 29일을 구할 수 있다.


동작 방식 이해하기

이 코드가 어떻게 동작하는지 조금 더 구체적으로 알아보자.

  1. strtotime($previousMonth . '01'): $previousMonth라는 문자열에 01을 붙여 해당 월의 첫 번째 날짜를 만든다.
    • 예를 들어 $previousMonth = "2024-01";라면 결과는 "2024-01-01"이다.
  2. date("Y-m-01", ...): 위에서 구한 날짜를 전달의 첫 번째 날로 변환한다. 이는 항상 전달의 1일을 반환한다.
  3. strtotime("-1 month", ...): 전달의 첫날에서 한 달 전으로 이동한다. 이로써 전전달의 1일이 계산된다.
  4. date("Y-m-29", ...): 계산된 전전달의 날짜를 기준으로 해당 월의 29일을 반환한다.

예제 실행 결과

다음은 특정 월을 기준으로 한 결과를 예로 들어보겠다.

  • $previousMonth = "2024-01";
    • $previousMonthFromDate: "2024-01-01"
    • $twoMonthsAgoDate: "2023-11-29"
  • $previousMonth = "2023-12";
    • $previousMonthFromDate: "2023-12-01"
    • $twoMonthsAgoDate: "2023-10-29"

이렇게 코드를 실행하면 정확한 날짜가 반환된다.


유효하지 않은 날짜 처리

여기서 주의해야 할 점이 하나 있다. 만약 계산된 날짜가 유효하지 않은 경우(예: 2월 29일이 없는 해), PHP는 자동으로 적절한 날짜로 조정한다. 예를 들어 전전달이 2월이고 29일이 없는 경우라면, 2월의 마지막 날(28일 또는 29일)로 설정된다. 이는 PHP의 날짜 처리 기능이 자동으로 유효한 범위 내에서 동작하기 때문에 가능한 일이다. 이를 통해 불필요한 오류를 방지할 수 있다.


마무리

PHP에서 날짜를 계산하는 것은 어렵지 않다. strtotime과 date 같은 기본 함수만으로도 다양한 날짜 계산 작업을 손쉽게 처리할 수 있다. 특히 위에서 설명한 방식은 가독성이 높고 재사용이 가능하기 때문에 다양한 프로젝트에서 활용할 수 있다.

날짜와 관련된 작업은 언제나 정확성과 신뢰성이 중요하다. 위의 코드를 활용해 작업의 효율성을 높이고, 필요에 따라 적절히 변형하여 사용하면 좋겠다.

반응형
댓글