Drupal CMS에서 나오는 날짜 개체를 가져 와서 하루를 빼고 두 날짜를 모두 인쇄하려고합니다. 여기에 내가 가진 것
$date_raw = $messagenode->field_message_date[0]['value'];
print($date_raw);
//this gives me the following string: 2011-04-24T00:00:00
$date_object = date_create($date_raw);
$next_date_object = date_modify($date_object,'-1 day');
print('First Date ' . date_format($date_object,'Y-m-d'));
//this gives me the correctly formatted string '2011-04-24'
print('Next Date ' . date_format($next_date_object,'Y-m-d'));
//this gives me nothing. The output here is always blank
그래서 원래 날짜 개체가 잘 나오는 이유를 이해하지 못하지만 추가 날짜 개체를 만들고 하루를 빼서 수정하려고하는데 그렇게 할 수없는 것 같습니다. 출력은 항상 공백으로 나옵니다.
답변
당신은 시도 할 수 있습니다:
print('Next Date ' . date('Y-m-d', strtotime('-1 day', strtotime($date_raw))));
답변
date('Y-m-d',(strtotime ( '-1 day' , strtotime ( $date) ) ));
답변
$date = new DateTime("2017-05-18"); // For today/now, don't pass an arg.
$date->modify("-1 day");
echo $date->format("Y-m-d H:i:s");
DateTime을 사용하면 날짜를 조작하는 동안 겪는 두통의 양이 크게 감소했습니다.
답변
객체 지향 버전
$dateObject = new DateTime( $date_raw );
print('Next Date ' . $dateObject->sub( new DateInterval('P1D') )->format('Y-m-d');
답변
한 줄의 옵션은 다음과 같습니다
echo date_create('2011-04-24')->modify('-1 days')->format('Y-m-d');
온라인 PHP 편집기 에서 실행합니다 .
mktime 대안
문자열 메서드를 사용하거나 계산에 들어가거나 추가 변수를 생성하지 않으려면 mktime 은 다음과 같은 방식으로 빼기와 음수 값을 지원합니다.
// Today's date
echo date('Y-m-d'); // 2016-03-22
// Yesterday's date
echo date('Y-m-d', mktime(0, 0, 0, date("m"), date("d")-1, date("Y"))); // 2016-03-21
// 42 days ago
echo date('Y-m-d', mktime(0, 0, 0, date("m"), date("d")-42, date("Y"))); // 2016-02-09
//Using a previous date object
$date_object = new DateTime('2011-04-24');
echo date('Y-m-d',
mktime(0, 0, 0,
$date_object->format("m"),
$date_object->format("d")-1,
$date_object->format("Y")
)
); // 2011-04-23
답변
현재 코드가 작동하지 않는 이유는 확실하지 않지만 날짜 개체가 특별히 필요하지 않으면 작동합니다.
$first_date = strtotime($date_raw);
$second_date = strtotime('-1 day', $first_date);
print 'First Date ' . date('Y-m-d', $first_date);
print 'Next Date ' . date('Y-m-d', $second_date);
답변
Php 수동 strtotime 함수 주석에서 가져온 Answear :
echo date( "Y-m-d", strtotime( "2009-01-31 -1 day"));
또는
$date = "2009-01-31";
echo date( "Y-m-d", strtotime( $date . "-1 day"));