Как я могу добавить 90 дней к Y-m-d H:i:s
предварительно отформатированную дату и преобразовать ее в метку времени Unix, чтобы я мог отправить ее в качестве аргумента истечения срока действия для setcookie()
?
Я пробовал следующее:
var_dump(strtotime('+90 days', '1994-02-21 08:01:13'));
Какие выводы:
Обратите внимание: Неправильно сформированное числовое значение, встречающееся в [путь к файлу] в строке 3.
INT (7777994)
Второй параметр 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'));
Используя 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
Я преобразовал свой ответ в функцию, которая по умолчанию составляет 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