PHP를 사용하여 지난 달의 오늘을 계산하는 방법

2183 단어 php계산하다
하루, 한 가지 문제에 부딪혀 지난 달의 오늘을 빌었다.처음에strtotime("-1month") 함수를 사용하여 값을 구하였는데, 달의 길이가 다른 달의 계산 결과가 틀렸다는 문제가 발견되었습니다.예: 2011-03-31, 얻은 결과는 2011-03-03이다.우리는 우선 어떤 문제도 추궁하지 않고 먼저 어떻게 문제를 해결하는지 보겠다.이때 PHP에 mktime 함수가 있다는 것을 생각하여 다음과 같은 코드를 작성했습니다

echo date("Y-m-d H:i:s", mktime(date("G", $time), date("i", $time),
 date("s", $time), date("n", $time) - 1, date("j", $time), date("Y", $time)));
실행할 때 결과는strtotime의 결과와 같다는 것을 발견합니다.아니면 이 함수를 바탕으로 달을 직접 조작할 수 없으니 우리는 하늘에서 착안하여 지난달을 얻은 다음에date로 데이터를 연결합니다.다음 코드:

$time = strtotime("2011-03-31");
/**
 *
 * @param type $time
 * @return type
 */
function last_month_today($time) {
     $last_month_time = mktime(date("G", $time), date("i", $time),
                date("s", $time), date("n", $time), - 1, date("Y", $time));
     return date(date("Y-m", $last_month_time) . "-d H:i:s", $time);
}
echo last_month_today($time);
그런데 이때 또 다른 문제가 생겼어요. 2011-02-31 같은 날짜가 없으면 어떡해요?현재의 수요는 이런 날짜에 대해 그 달의 마지막 날을 표시하는 것이다.다음 코드:

 $time = strtotime("2011-03-31");
/**
 * , ,
 * @param type $time
 * @return type
 */
function last_month_today($time){
    $last_month_time = mktime(date("G", $time), date("i", $time),
                date("s", $time), date("n", $time), 0, date("Y", $time));
    $last_month_t =  date("t", $last_month_time);
    if ($last_month_t < date("j", $time)) {
        return date("Y-m-t H:i:s", $last_month_time);
    }
    return date(date("Y-m", $last_month_time) . "-d", $time);
}
echo last_month_today($time);
여기서 주의해야 할 점: date ("Y-m", $last_month_time)."-d"코드.코드를 쓰는 과정에서'Y-'라고 쓰면.date(”m”, $last_month_time) . "-d"는 해를 넘기는 시간에 문제가 있다.이 점은 역시 이 문장을 쓸 때 발견한 것이다.이런 방법을 제외하고 먼저 연월일을 계산한 다음에 문자열을 연결할 수 있는데, 이것이 바로 순수한 문자열 조작이다.

좋은 웹페이지 즐겨찾기