하루씩 날짜증가..

하루씩 날짜증가..

QA

하루씩 날짜증가..

본문

2019-11-15
2019-11-16
2019-11-17
2019-11-18
2019-11-19
2019-11-20
이렇게 나와야하는데 뭐가 문제인지 잘모르겠습니다..

<?php
$start_day   = date('Y-m-d');
$end_day    = date('2019-11-20');



for ($i = strtotime($start_day); $i <= strtotime($end_day); $i++) {
    $start_day  = date('Y-m-d', strtotime('+1 day', strtotime($start_day)));
    echo $start_day."<br>";

}

 

 

이 질문에 댓글 쓰기 :

답변 3

문제의 원인을 남겼는데 피드백 없이, 이곳에만 댓글을….

DateTime Class로 해결은 되었습니까?

 

'문자'로 돌려도 날짜 문자열을 인식해 정상적인 결과를 얻어내니 나쁜 방법은 아닙니다.

 

참고로 추가.

- 지정한 날짜까지 남은 경우, 당일, 지난 경우에 대한 처리

- strtotime(), date() 함수를 조금이라도 줄이면 빨라집니다.

  strtotime('+1 day', strtotime($start_day)) → strtotime($start_day.' +1 day')

기타 생략

답변 감사합니다.^^^^
사실 오기가 생겨서 혼자 밤새도록 누가이기나 될때까지 해봤네요..
피드백 드리지 못해 죄송합니다.  결국 답을 찾았지만요.

for ($i = 0; strtotime($start_day) <= strtotime($end_day) $i++) {
 echo $start_day;
 $start_day = date('Y-m-d', strtotime($start_day. '+1 day'));
}


기존 소스에서
for의 조건문 ( $i <= strtotime($end_day) ) 에서 문제가 발생하였던것 같습니다.

기존 $i 에서

strtotime($start_day) <= strtotime($end_day) 로 변경하였더니 잘 되는 부분을 확인하였습니다.

정확한 이유는 잘 모르겠지만 혼자 결론 내린내용은

$i의 타입은 int

strtotime($end_day)의 타입은 date형식이라 조건에서 계산이 안된것같습니다.

감사합니다.

혼자 결론내렸단 내용에도 문제가 있어 참고로 댓글 추가합니다.

문제의 원인은 이미 스쿨에 댓글로 남겼는데 제대로 읽지 않은 것 같군요.
"문제. timestamp를 구해서 1씩 증가니까 엄청나게 반복하겠지요."

timestamp는 1970년 1월 1일부터 지금까지 지나온 초를 나타낸 수입니다.
strtotime('2019-11-15')의 결과는 1573743600(int) 입니다. date 형식이 아닙니다.


for ($i = strtotime($start_day); $i <= strtotime($end_day); $i++) { // $start_day = '2019-11-15' 기준
}
// 실제로 처리되는 값은 아래와 같죠. 결국 432,000번을 반복하게 됩니다.
for ($i=1573743600; $i<=1574175600; $i++) {
}


다른 내용은 생략합니다.

$start_day   = date('Y-m-d');
$end_day    = date('2019-11-20');

while (strtotime($start_day) <= strtotime($end_day)) {
    echo $start_day."<br>";
    $start_day  = date('Y-m-d', strtotime('+1 day', strtotime($start_day)));
}


<?php
$start_day   = date('Y-m-d');
$end_day    = date('2019-11-20');
for ($i = 0; $start_day <= $end_day ; $i++) {
    echo $start_day."<br>";
    $start_day  = date('Y-m-d', strtotime('+1 day', strtotime($start_day)));
  
}
답변을 작성하시기 전에 로그인 해주세요.
전체 59,301
QA 내용 검색

회원로그인

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