티스토리 뷰
웹 개발을 하다 보면 특정 날짜를 기준으로 이전 날짜나 특정 조건을 만족하는 날짜를 계산해야 하는 경우가 종종 있다. 예를 들어, 특정 월의 첫 번째 날에서 더 이전인 날짜를 구하는 상황을 상상해보자. 이번 글에서는 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일을 구할 수 있다.
동작 방식 이해하기
이 코드가 어떻게 동작하는지 조금 더 구체적으로 알아보자.
- strtotime($previousMonth . '01'): $previousMonth라는 문자열에 01을 붙여 해당 월의 첫 번째 날짜를 만든다.
- 예를 들어 $previousMonth = "2024-01";라면 결과는 "2024-01-01"이다.
- date("Y-m-01", ...): 위에서 구한 날짜를 전달의 첫 번째 날로 변환한다. 이는 항상 전달의 1일을 반환한다.
- strtotime("-1 month", ...): 전달의 첫날에서 한 달 전으로 이동한다. 이로써 전전달의 1일이 계산된다.
- 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 같은 기본 함수만으로도 다양한 날짜 계산 작업을 손쉽게 처리할 수 있다. 특히 위에서 설명한 방식은 가독성이 높고 재사용이 가능하기 때문에 다양한 프로젝트에서 활용할 수 있다.
날짜와 관련된 작업은 언제나 정확성과 신뢰성이 중요하다. 위의 코드를 활용해 작업의 효율성을 높이고, 필요에 따라 적절히 변형하여 사용하면 좋겠다.
'IT tech Coding > php' 카테고리의 다른 글
PHP 리팩토링으로 웹 애플리케이션 효율 높이기 (0) | 2025.01.17 |
---|---|
PHP에서 문자열 포함 여부를 확인하는 방법: strpos() 함수 완벽 가이드 (0) | 2025.01.16 |
PHP로 Radio 버튼과 검색 필드를 연동하여 동적 검색 구현하기 (0) | 2025.01.02 |
PHP에서 한 자리 숫자를 두 자리로 변환하기: 실용적인 가이드 (0) | 2025.01.02 |
PHP에서 안전하게 배열 크기를 확인하는 방법 (0) | 2024.12.30 |
- Total
- Today
- Yesterday
- sql문장 날짜계산
- 스크립트작성기초
- 엑셀보호
- #InstallForge
- Bootstrap 5
- 코딩효율성
- 파이썬코드줄바꿈방법
- chatGPT3.5파이썬버전
- General error: 2031
- #프로그램설치
- #파이썬패키징
- 프로그래머생활
- isset을 적용해야 하는 이유
- 뫄프로그래밍
- 효율적코딩방법
- 티스토리챌린지
- coalesce는 한국어로 "코얼레스크" 또는 "코얼리스"
- 엑셀셀보호
- 코딩튜토리얼
- 테크에능한여성
- ajax오류메시지
- json파일편하게보는법
- 캐드자동작도
- 도면자동생성
- 1. #웹개발 2. #로트번호 3. #성적서보기 4. #ajax 5. #jquery 6. #php 7. #프론트엔드 8. #백엔드 9. #부트스트랩 10. #웹기능구현
- 오블완
- 엑셀입력보호
- 구글드라이브API
- json파일형태보기
- 오토핫키가이드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |