PHP 날짜와 날짜 사이 모든 날짜 배열로 구하기
PHP에서 어느 날짜와 또 다른 어느 날짜 사이에 있는 모든 날짜들을 배열로 구하는 방법을 알려드리도록 하겠습니다.
yyyy-mm-dd 형식의 문자열로 시작날짜와 마지막 날짜를 받아,
시작 날짜와 마지막 날짜 사이의 모든 날짜를 yyyy-mm-dd 형식의 문자로 배열에 담아 반환하는 함수
function getDatesStartToLast($startDate, $lastDate) {
$regex = "/^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[0-1])$/";
if(!(preg_match($regex, $startDate) && preg_match($regex, $lastDate))) return "Not Date Format";
$period = new DatePeriod( new DateTime($startDate), new DateInterval('P1D'), new DateTime($lastDate." +1 day"));
foreach ($period as $date) $dates[] = $date->format("Y-m-d");
return $dates;
}
위 함수는 yyyy-mm-dd 형식의 문자열로 시작 날짜와 마지막 날짜를 인자값으로 받아,
날짜 기간을 나타내는 객체 DatePeriod 에
시작 날짜와 마지막 날짜, 그리고 날짜 간격을 나타내는 객체 DateInterval로 날짜 간격을 하루씩 설정하여 날짜 기간을 구하고,
날짜 기간안의 모든 날짜를 yyyy-mm-dd 형식의 문자열로 구하여 배열에 넣고 반환합니다.
시작 날짜와 마지막 날짜를 인자로 받아올 때, 정규식을 통해 올바른 날짜 형식이 아니라면 날짜 형식이 아니라는 문자열을 반환합니다.
function getDatesStartToLast($startDate, $lastDate) {
$regex = "/^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[0-1])$/";
if(!(preg_match($regex, $startDate) && preg_match($regex, $lastDate))) return "Not Date Format";
$period = new DatePeriod( new DateTime($startDate), new DateInterval('P1D'), new DateTime($lastDate." +1 day"));
foreach ($period as $date) $dates[] = $date->format("Y-m-d");
return $dates;
}
$dates = getDatesStartToLast("2020-09-25", "2020-10-12");
print_r($dates);
/**********/
출력 :
Array
(
[0] => 2020-09-25
[1] => 2020-09-26
[2] => 2020-09-27
[3] => 2020-09-28
[4] => 2020-09-29
[5] => 2020-09-30
[6] => 2020-10-01
[7] => 2020-10-02
[8] => 2020-10-03
[9] => 2020-10-04
[10] => 2020-10-05
[11] => 2020-10-06
[12] => 2020-10-07
[13] => 2020-10-08
[14] => 2020-10-09
[15] => 2020-10-10
[16] => 2020-10-11
[17] => 2020-10-12
)
제 글에 잘못된 정보, 더 좋은 방법 혹은 정보, 궁금하신 점,
요청 사항 등이 있으시다면 언제든지 말씀해 주세요!
감사합니다.
'Developer > PHP' 카테고리의 다른 글
PHP 디렉토리 안 모든 파일 삭제, 특정 확장자 파일 삭제, 특정 확장자 제외 파일 삭제 (0) | 2021.01.11 |
---|---|
PHP URL Paramater, Query Parsing - parse_url, parse_str (0) | 2021.01.10 |
PHP 배열 마지막 요소 구하는 방법 (0) | 2020.10.14 |
[PHP] Allowed memory size of 134217728 bytes exhausted (0) | 2020.10.02 |
[PHP] Maximum execution time of 30 seconds exceeded (0) | 2020.10.01 |
댓글