PHP: добавление секунд к дате
Я $adate;
содержит:
Tue Jan 4 07:59:59 2011
Я хочу добавить к этой дате ниже:
$duration=674165; // in seconds
после добавления секунд мне нужен результат обратно в формат даты.
Я не знаю, что я делаю, но я получаю странные результаты.
Примечание: обе переменные являются динамическими. Теперь они равны заданным значениям, но в следующем запросе они будут иметь разные значения.
8 ответов
Если вы используете PHP 5.3+ вы можете использовать новый способ сделать это.
<?php
$date = new DateTime();
echo $date->getTimestamp(). "<br>";
$date->add(new DateInterval('PT674165S')); // adds 674165 secs
echo $date->getTimestamp();
?>
просто используйте некоторые приятные функции даты/времени PHP:
$adate="Tue Jan 4 07:59:59 2011";
$duration=674165;
$dateinsec=strtotime($adate);
$newdate=$dateinsec+$duration;
echo date('D M H:i:s Y',$newdate);
учитывая тот факт, что $adate
является меткой времени (если это так), вы можете сделать что-то вроде этого:
$duration = 674165;
$result_date = strtotime(sprintf('+%d seconds', $duration), $adate);
echo date('Y-m-d H:i:s', $result_date);
этого:
$seconds = 1;
$date_now = "2016-06-02 00:00:00";
echo date("Y-m-d H:i:s", (strtotime(date($date_now)) + $seconds));
у меня проблемы с strtotime()
чтобы решить мою проблему добавить динамические данные / значение времени в текущем времени
Это было мое решение:
$expires = 3600; //my dynamic time variable (static representation here)
$date = date_create(date('Y-m-d H:i:s')); //create a date/time variable (with the specified format - create your format, see (1))
echo date_format($date, 'Y-m-d H:i:s')."<br/>"; //shows the date/time variable without add seconds/time
date_add($date, date_interval_create_from_date_string($expires.' seconds')); //add dynamic quantity of seconds to data/time variable
echo date_format($date, 'Y-m-d H:i:s'); //shows the new data/time value
шрифт: https://secure.php.net/manual/en/datetime.add.php (советуйте слишком объектно-ориентированном стиле Valugi Elzoбыл решение)
Я сделал этот пример для часового пояса, но если вы измените некоторые части, это может помочь вам:
$seconds_to_add = 30;
$time = new DateTime();
$time->setTimezone(new DateTimeZone('Europe/London'));
$time2 = $time->format("Y/m/d G:i:s");
$time->add(new DateInterval('PT' . $seconds_to_add . 'S'));
$timestamp = $time->format("Y/m/d G:i:s");
echo $timestamp;
echo '========';
echo $time2;
результат:
2018/06/17 3:16:23========2018/06/17 3:15:53