[php] PHP에서 날짜 시간에 분 추가

나는 많은 구글링과 PHP 수동 읽기를 한 후 날짜 시간에 X 분을 추가하는 데 정말 고착되어 있습니다.

내가 가진 날짜 시간 형식은 다음과 같습니다.

2011-11-17 05:05: year-month-day hour:minute

추가 할 분은 0에서 59 사이의 숫자입니다.

분이 추가 된 입력 형식과 동일한 출력을 원합니다.

내 시도가 나를 어디로도 데려 가지 않는 것처럼 보이기 때문에 누군가가 작동하는 코드 예제를 줄 수 있습니까?



답변

$minutes_to_add = 5;

$time = new DateTime('2011-11-17 05:05');
$time->add(new DateInterval('PT' . $minutes_to_add . 'M'));

$stamp = $time->format('Y-m-d H:i');

기간 동안 ISO 8601 표준 의 형태로 문자열 P{y}Y{m1}M{d}DT{h}H{m2}M{s}S를 Where {*}부품이 기간이 얼마나 오래 나타내는 숫자 값으로 대체됩니다.

예를 들어, P1Y2DT5S1 년, 2 일, 5 초를 의미합니다.

위의 예에서는 생성자 에게 PT5M(또는 5 분) 제공 합니다 DateInterval.


답변

PHP의 DateTime 클래스 에는 이해하기 쉬운 텍스트를 가져 오는 유용한 수정 메소드가 있습니다.

$dateTime = new DateTime('2011-11-17 05:05');
$dateTime->modify('+5 minutes');

또한 문자열 보간 또는 연결을 사용하여 매개 변수화 할 수 있습니다.

$dateTime = new DateTime('2011-11-17 05:05');
$minutesToAdd = 5;
$dateTime->modify("+{$minutesToAdd} minutes");


답변

$newtimestamp = strtotime('2011-11-17 05:05 + 16 minute');
echo date('Y-m-d H:i:s', $newtimestamp);

결과는

2011-11-17 05:21:00

라이브 데모는 here

strtotime아직 익숙하지 않다면 , php.net그것이 큰 힘이라는 것을 발견하는 것이 좋습니다 🙂


답변

네이티브 함수로 쉽게이 작업을 수행 할 수 있습니다.

strtotime('+59 minutes', strtotime('2011-11-17 05:05'));

그래도 Tim이 게시 한 DateTime 클래스 메서드를 권장합니다.


답변

나는 이것이 시간대를 다룰 때도 도움이 될 것이라고 생각했습니다. 내 수정 된 솔루션은 위의 정답 인 @Tim Cooper의 솔루션을 기반으로합니다.

$minutes_to_add = 10;
$time = new DateTime();
**$time->setTimezone(new DateTimeZone('America/Toronto'));**
$time->add(new DateInterval('PT' . $minutes_to_add . 'M'));
$timestamp = $time->format("Y/m/d G:i:s");

굵은 선인 3 행이 추가되었습니다. 나는 이것이 일부 사람들에게도 도움이되기를 바랍니다.


답변

약간 늦게 대답했지만 내가 사용할 방법은 다음과 같습니다.

// Create a new \DateTime instance
$date = DateTime::createFromFormat('Y-m-d H:i:s', '2015-10-26 10:00:00');

// Modify the date
$date->modify('+5 minutes');

// Output
echo $date->format('Y-m-d H:i:s');

또는 PHP> = 5.4

echo (DateTime::createFromFormat('Y-m-d H:i:s', '2015-10-26 10:00:00'))->modify('+5 minutes')->format('Y-m-d H:i:s')


답변

분을 포함하는 변수를 제공하려는 경우.

그렇다면 나는 이것이 이것을 달성하는 좋은 방법이라고 생각합니다.

$minutes = 10;
$maxAge = new DateTime('2011-11-17 05:05');
$maxAge->modify("+{$minutes} minutes");