PHP:为日期添加秒数

ADM*_*ADM 31 php duration date add seconds

我有$adate;哪些包含:

Tue Jan 4 07:59:59 2011
Run Code Online (Sandbox Code Playgroud)

我想在此日期添加以下内容:

$duration=674165; // in seconds
Run Code Online (Sandbox Code Playgroud)

添加秒后,我需要将结果恢复为日期格式.

我不知道我在做什么,但我得到了奇怪的结果.

注意:两个变量都是动态的.现在它们等于给定的值,但是下一个查询它们将具有不同的值.

Elz*_*ugi 70

如果您使用的是php 5.3+,则可以使用新的方法来执行此操作.

<?php 
$date = new DateTime();
echo $date->getTimestamp(). "<br>";
$date->add(new DateInterval('PT674165S')); // adds 674165 secs
echo $date->getTimestamp();
?>
Run Code Online (Sandbox Code Playgroud)

  • `$ date = new\DateTime('+'.$ interval.'seconds');` (11认同)
  • 我认为它更容易:`$ date-> add(DateInterval :: createFromDateString('2 seconds'));`如果你想要其他间隔,请看这里:http://php.net/manual/en/dateinterval .createfromdatestring.php (6认同)
  • @Andrew 格式以字母 P 开头,表示“句号”。每个持续时间周期由一个整数值后跟一个周期指示符表示。如果持续时间包含时间元素,则规范的该部分前面带有字母 T。 http://php.net/manual/en/dateinterval.construct.php (2认同)

Dig*_*ato 26

只需使用一些不错的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);
Run Code Online (Sandbox Code Playgroud)


小智 11

鉴于这$adate是一个时间戳(如果是这种情况),你可以这样做:

$duration = 674165;
$result_date = strtotime(sprintf('+%d seconds', $duration), $adate);
echo date('Y-m-d H:i:s', $result_date);
Run Code Online (Sandbox Code Playgroud)


小智 5

做这个:

$seconds = 1;
$date_now = "2016-06-02 00:00:00";

echo date("Y-m-d H:i:s", (strtotime(date($date_now)) + $seconds));
Run Code Online (Sandbox Code Playgroud)


Kri*_*ian 5

// add 20 sec to now
$duration = 20;
echo date("Y-m-d H:i:s", strtotime("+$duration sec"));
Run Code Online (Sandbox Code Playgroud)