728x90
날짜 사이값 구하기
사이값 좀 구하려니까 너무어려운 글들이 많아... 간단하게 만들어보았다.
거창한건 아니고 배열로 값들을 집어넣어준건데.
딱히 이렇게 사용하지않고 키값을 날짜로해줘도 나름 편하다.
나같은경우엔 저기 중복들도있어서 중복되면 안의 값들이 알아서 다 들어가도록 만들고
그 부분에서 간단한부분만 잘라내서 가져왔다.
$s_date = Date('Y-m-d',strtotime('2022-12-01'));
$e_date = Date('Y-m-d',strtotime('2022-12-06'));
/* 원하는 값 0 -> 2022-12-01 1 -> 2022-12-02 ..... 12-06까지*/
원하는 값은
0 -> 2022-12-01
1 -> 2022-12-02
... 5-> 2022-12-06
배열로 모든 값을 받아와서 깔끔하게 정리하려한다.
간단하게 함수를 하나 만들어주면 된다.
function getDatesStartToLast($startDate, $lastDate) {
$dates = array();
$regex = "/^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[0-1])$/";
/* 형식을 2022-02-01 로 맞춤 */
if (!(preg_match($regex, $startDate) && preg_match($regex, $lastDate))) {
return '값이다름';
}
/* 형식을 맞게 하지않으면 값이 다르다고 돌려줌 */
if ($startDate>$lastDate) {
return '시작일이 마지막일보다 큼';
}
/* 일자를 비교해서 값을 돌려줌. */
for ($date=$startDate; $date<=$lastDate; $date=date("Y-m-d",strtotime('+1 days',strtotime($date)))) {
$dates[] = $date;
}
/* 시작일을 기본으로 strtotime으로 하루씩 올려준다. */
return $dates;
}
- 값을 선언해놓는다.
- 처음 설정한 값들을 직접 넣어준다.
- 값들이 date타입으로 비교했을경우 제대로 형식을 갖춰서 가져왓는지 확인한다.
- 시작일과 마지막일 사이의 날짜가 있는지 비교한다. ( 2일밑이면 원레 그냥 배열로 2개만 리턴했는데 보기편하라고..)
- 시작일을 startdate로 놔두고 하루씩 올려가며 배열에 일짜를 넣어준다.
strtotime +1 days 는 하루를 더하기에 매우 편안하게 진행된다.
$date1 = getDatesStartToLast($s_date,$e_date);
$date2 = getDatesStartToLast($e_date,$s_date);
$date3 = getDatesStartToLast('1234-1212-1212','4321-43-4343');
asd($date1);
asd($date2);
asd($date3);
완성은 이렇게 되어있다.
728x90
'개인 공부' 카테고리의 다른 글
[SQL,PHP] 웹 해킹 자동화공격 막기 (0) | 2023.01.12 |
---|---|
[JQuery] 프리뷰 이미지 만들기(미리보기) (0) | 2022.12.13 |
JQuert 사용 (0) | 2022.12.05 |
[php] 기본적인 함수 사용(strlen, number_fomat,substr) (0) | 2022.11.30 |
[php] 기본적인 함수 사용_2 (timestamp,strotitome,date) (0) | 2022.11.22 |