Добавьте 90 дней к дате в формате Y-m-d H: i: s в формате отметки времени Unix

Как я могу добавить 90 дней к Y-m-d H:i:s предварительно отформатированную дату и преобразовать ее в метку времени Unix, чтобы я мог отправить ее в качестве аргумента истечения срока действия для setcookie()?

Я пробовал следующее:

var_dump(strtotime('+90 days', '1994-02-21 08:01:13'));

Какие выводы:

Обратите внимание: Неправильно сформированное числовое значение, встречающееся в [путь к файлу] в строке 3.

INT (7777994)

0

Решение

Второй параметр strtotime() ожидает отметку времени, а не строку. Другими словами, вам нужно позвонить strtotime() по второму параметру, вот так:

var_dump(strtotime('+90 days', strtotime('1994-02-21 08:01:13')));

Также возможно более простое решение (без использования второго параметра):

var_dump(strtotime('1994-02-21 08:01:13 +90 days'));
2

Другие решения

Используя DateTime, вы можете легко переключаться между отметкой времени unix или форматированием.

$date = new DateTime("1994-02-21 08:01:13");
$date->add(DateInterval::createFromDateString("90 days"));
var_dump($date->getTimestamp()); // Prints: int(769593673)
//var_dump($date->format("Y-m-d H:i:s")); // Prints: 1994-05-22 08:01:13
4

Я преобразовал свой ответ в функцию, которая по умолчанию составляет 90 дней, но будет принимать любое количество дней.
Это до следующего кодера, чтобы решить любую исправление ошибок / обнаружение

date_default_timezone_set('America/New_York');

function add_days($input,$days=90){
$timestamp=strtotime($input);
$future = $timestamp + (60*60*24*$days);
//$future_string = date('Y-m-d H:i:s', $future);
//return $future_string;
return $future;
}

echo add_days('1994-02-21 08:01:13'); // default 90
echo "\n";
echo add_days('1994-02-21 08:01:13',10);  // 10, just to show a non-default return

Otuput:

1994-05-22 09:01:13
1994-03-03 08:01:13

769611673
762699673
0
По вопросам рекламы [email protected]