PHP将15分钟添加到时间值

时间:2013-12-13 00:32:57

标签: php datetime

我有一个接收时间值的表单:

$selectedTime = $_REQUEST['time'];

时间是这种格式 - 上午9:15 - 上午9:15。然后我需要添加15分钟并将其存储在一个单独的变量中,但我很难过。

我试图使用strtotime但没有成功,例如:

$endTime = strtotime("+15 minutes",strtotime($selectedTime)));

但这不会解析。

7 个答案:

答案 0 :(得分:50)

您的代码无效(解析),因为最后会有一个额外的)导致 Parse Error 。算一下,你有2 (和3 )。如果你修复它会很好,但是strtotime()会返回一个时间戳,所以为了让人类可以读取时间date()

$selectedTime = "9:15:00";
$endTime = strtotime("+15 minutes", strtotime($selectedTime));
echo date('h:i:s', $endTime);

获取一个语法高亮显示的编辑器,并显示无与伦比的括号,大括号等。

在没有任何TZ或DST的情况下直接进行,并添加15分钟(阅读zerkms评论):

 $endTime = strtotime($selectedTime) + 900;  //900 = 15 min X 60 sec

仍然,)是这里的主要问题。

答案 1 :(得分:8)

虽然你可以通过PHP的时间函数来实现这一点,但是让我向你介绍PHP的DateTime类,它与它的相关类一起,应该在任何PHP开发人员的工具包中。

// note this will set to today's current date since you are not specifying it in your passed parameter. This probably doesn't matter if you are just going to add time to it.
$datetime = DateTime::createFromFormat('g:i:s', $selectedTime);
$datetime->modify('+15 minutes');
echo $datetime->format('g:i:s');

请注意,如果您要查看的内容基本上是提供12或24小时的时钟功能,您可以添加/减去时间并且实际上并不关心日期,因此您希望消除围绕日光节省的可能问题时间改变这样我会推荐以下格式之一:

!g:i:s 12小时格式,小时没有前导零

!G:i:s带有前导零的12小时格式

请注意格式中的!项。这会将日期组件设置为Linux纪元(1-1-1970)中的第一天

答案 2 :(得分:2)

要扩展之前的答案,执行此操作的功能可以这样工作(根据this for function.datethis for DateInterval更改您喜欢的格式的时间和间隔格式):

(我还写了alternate form of the below function here。)

// Return adjusted time.

function addMinutesToTime( $time, $plusMinutes ) {

    $time = DateTime::createFromFormat( 'g:i:s', $time );
    $time->add( new DateInterval( 'PT' . ( (integer) $plusMinutes ) . 'M' ) );
    $newTime = $time->format( 'g:i:s' );

    return $newTime;
}

$adjustedTime = addMinutesToTime( '9:15:00', 15 );

echo '<h1>Adjusted Time: ' . $adjustedTime . '</h1>' . PHP_EOL . PHP_EOL;

答案 3 :(得分:0)

strtotime 返回当前时间戳,而 日期 用于格式化时间戳

  $date=strtotime(date("h:i:sa"))+900;//15*60=900 seconds
  $date=date("h:i:sa",$date);

这将使当前时间增加15分钟

答案 4 :(得分:-1)

你也可以使用下面的代码。很简单。

$selectedTime = "9:15:00";
echo date('h:i:s',strtotime($selectedTime . ' +15 minutes'));

答案 5 :(得分:-1)

当前日期和时间

$current_date_time = date('Y-m-d H:i:s');

15分钟前日期和时间

$newTime = date("Y-m-d H:i:s",strtotime("+15 minutes", strtotime($current_date)));

答案 6 :(得分:-1)

非常简单

$timestring = '09:15:00';
echo date('h:i:s', strtotime($timestring) + (15 * 60));