programing

$date + 1년?

firstcheck 2022. 12. 27. 21:39
반응형

$date + 1년?

제가 지정한 날짜로부터 1년 후의 날짜를 잡으려고 합니다.

코드는 다음과 같습니다.

$futureDate=date('Y-m-d', strtotime('+one year', $startDate));

잘못된 날짜를 반환하고 있습니다.왜 그런지 알아요?

$futureDate=date('Y-m-d', strtotime('+1 year'));

$futureDate는 1년 후입니다!

$futureDate=date('Y-m-d', strtotime('+1 year', strtotime($startDate)) );

$futureDate는 $startDate로부터 1년 후입니다.

오늘 날짜로 1년을 추가하려면 다음을 사용합니다.

$oneYearOn = date('Y-m-d',strtotime(date("Y-m-d", mktime()) . " + 365 day"));

다른 예에서는 다음과 같은 타임스탬프 값을 사용하여 $StartingDate를 초기화해야 합니다.

$StartingDate = mktime();  // todays date as a timestamp

이거 드셔보세요

$newEndingDate = date("Y-m-d", strtotime(date("Y-m-d", strtotime($StaringDate)) . " + 365 day"));

또는

$newEndingDate = date("Y-m-d", strtotime(date("Y-m-d", strtotime($StaringDate)) . " + 1 year"));
//1 year from today's date
echo date('d-m-Y', strtotime('+1 year'));

//1 year from from specific date
echo date('22-09-Y', strtotime('+1 year'));

이 간단한 코드가 장래에 도움이 되기를 바란다:)

시험:$futureDate=date('Y-m-d',strtotime('+1 year',$startDate));

같은 문제를 안고 있었을 뿐이지만, 이것이 가장 간단한 해결책이었습니다.

<?php (date('Y')+1).date('-m-d'); ?>
// Declare a variable for this year 
$this_year = date("Y");
// Add 1 to the variable
$next_year = $this_year + 1;
$year_after = $this_year + 2;

// Check your code
    echo "This year is ";
    echo $this_year;
    echo "<br />";
    echo "Next year is ";
    echo $next_year;
    echo "<br />";
    echo "The year after that is ";
    echo $year_after;

저는 OOO 접근 방식을 선호합니다.

$date = new \DateTimeImmutable('today'); //'today' gives midnight, leave blank for current time.
$futureDate = $date->add(\DateInterval::createFromDateString('+1 Year'))

사용하다DateTimeImmutable그렇지 않으면 원래 날짜도 수정됩니다.자세한 내용은 DateTimeImmmutable: http://php.net/manual/en/class.datetimeimmutable.php 를 참조해 주세요.


현재 날짜부터 다음 작업을 수행할 수 있습니다.

new \DateTimeImmutable('-1 Month');

PHP 5.3을 사용하는 경우 기본 시간대를 설정해야 하기 때문입니다.

date_default_timezone_set()

strtotime()돌아오고 있다bool(false)문자열을 해석할 수 없기 때문에'+one year'('하나'를 이해하지 못합니다). false암묵적으로 캐스트 되고 있습니다.integer타임스탬프0검증하는 것이 좋습니다.strtotime()의 출력은 그렇지 않습니다.bool(false)다른 기능으로 밀어넣기 전에 말이죠.

문서에서:

반환값

성공 시 타임스탬프를 반환하고 그렇지 않으면 FALSE를 반환합니다.PHP 5.1.0 이전 버전에서는 이 함수는 실패 시 -1을 반환했습니다.

시험해 보다

$nextyear  = date("M d,Y",mktime(0, 0, 0, date("m",strtotime($startDate)),   date("d",strtotime($startDate)),   date("Y",strtotime($startDate))+1));

또한 보다 단순하고 덜 복잡한 솔루션도 있습니다.

$monthDay = date('m/d');
$year = date('Y')+1;
$oneYearFuture = "".$monthDay."/".$year."";
echo"The date one year in the future is: ".$oneYearFuture."";

솔루션은 다음과 같습니다.date('Y-m-d', time()-60*60*24*365);

다음 정의를 사용하여 보다 읽기 쉽게 만들 수 있습니다.

define('ONE_SECOND', 1);
define('ONE_MINUTE', 60 * ONE_SECOND);
define('ONE_HOUR',   60 * ONE_MINUTE);
define('ONE_DAY',    24 * ONE_HOUR);
define('ONE_YEAR',  365 * ONE_DAY);

date('Y-m-d', time()-ONE_YEAR);

strtotime()을 사용하여 미래 시간을 얻을 수 있습니다.

//strtotime('+1 day');
//strtotime('+1 week');
//strtotime('+1 month');

 $now = date('Y-m-d'); 
 $oneYearLaterFromNow = date('Y-m-d', strtotime('+1 year'));
 $oneYearLaterFromAnyDate = date('Y-m-d', strtotime('+1 year', strtotime($anyValidDateString)));

제 경우(현재까지 3년을 추가하고 싶습니다) 솔루션은 다음과 같습니다.

$future_date = date('Y-m-d', strtotime("now + 3 years"));

Gardenee, Treby, Daniel Lima에게 : 2월 29일은 어떻게 될까요?2월이 28일밖에 없는 경우도 있습니다.

언급URL : https://stackoverflow.com/questions/1905048/date-1-year

반응형