PHP получить время будущей даты - PullRequest
12 голосов
/ 09 апреля 2010

Я не знаю, как объяснить это правильно, но просто пример для вас, ребята, чтобы вы могли действительно получить то, что я пытаюсь сказать.

Сегодня 09 апреля 2010 г.

7 дней с апреля по 16,2010

Я ищу php-код, который может дать мне точную дату с указанием интервала числа дней до текущей даты.

Я искал тему, которая может решить или даже дать подсказку, как решить эту проблему, но я не нашел ни одной.

Ответы [ 6 ]

26 голосов
/ 09 апреля 2010

Если вы используете PHP> = 5.2, я настоятельно рекомендую вам использовать новый объект DateTime, который значительно упрощает работу с датами:

<?php
$date = new DateTime("2006-12-12");
$date->modify("+7 day");
echo $date->format("Y-m-d");
?>
9 голосов
/ 09 апреля 2010

Взгляните сюда - http://php.net/manual/en/function.strtotime.php

<?php
// This is what you need for future date from now.
echo date('Y-m-d H:i:s', strtotime("+7 day"));

// This is what you need for future date from specific date.
echo date('Y-m-d H:i:s', strtotime('01/01/2010 +7 day'));
?>
5 голосов
/ 17 июля 2015

Принятый ответ не является неправильным, но не лучшим решением:

Класс DateTime принимает необязательную строку в конструкторе, которая может определять ту же логику, что и метод modify .

<?php
$date = new DateTime("+7 day");

Например:

<?php
namespace DateTimeExample;

$now = new \DateTime("now");
$inOneWeek = new \DateTime("+7 day");

printf("Now it's the %s", $now->format('Y-m-d'));
printf("In one week it's the %s", $inOneWeek->format('Y-m-d'));

Список доступных относительных форматов (для конструктора DateTime) можно найти в http://php.net/manual/de/datetime.formats.relative.php

2 голосов
/ 09 апреля 2010

Вам нужно заглянуть в strtotime () . Я полагаю, ваш окончательный код будет выглядеть примерно так:

$future_date = "April 16,2010";
$seconds = strtotime($future_date) - time();
$days = $seconds /(60 * 60* 24);
echo $days; //Returns "6.0212962962963"
1 голос
/ 23 октября 2013

Если вы используете PHP> = 5.3, это может быть вариант.

<?php
$date = new DateTime( "2006-12-12" );
$date->add( new DateInterval( "P7D" ) );
?>
0 голосов
/ 09 апреля 2010

Вы можете использовать mktime с датой. (http://php.net/manual/en/function.date.php)

Дата дает вам текущую дату. Это лучше, чем просто добавлять / вычитать временную метку, поскольку она может учитывать летнее время.

<?php
# this gets you 7 days earlier than the current date
$lastWeek = mktime(0, 0, 0, date("m")  , date("d")-7, date("Y"));
# now pretty-print it out (eg, prints April 2, 2010.)
echo date("F j, Y.", $lastWeek), "\n";
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...