如何将90天添加到预先定义的Y-m-d H:i:s
格式化日期并将其转换为Unix时间戳,以便将其作为setcookie()
的到期参数发送?
我尝试了以下内容:
var_dump(strtotime('+90 days', '1994-02-21 08:01:13'));
哪个输出:
注意: 3 上[文件路径]中遇到的格式错误的数值。
INT(7777994)
答案 0 :(得分:4)
使用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
答案 1 :(得分:2)
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 :(得分:0)
我将答案转换为默认为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