添加90天到Y-m-d H:i:s格式化日期,采用Unix时间戳格式

时间:2014-09-21 21:10:56

标签: php unix-timestamp strtotime

如何将90天添加到预先定义的Y-m-d H:i:s格式化日期并将其转换为Unix时间戳,以便将其作为setcookie()的到期参数发送?

我尝试了以下内容:

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

哪个输出:

  

注意: 3 上[文件路径]中遇到的格式错误的数值。

     

INT(7777994)

3 个答案:

答案 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