web-dev-qa-db-fra.com

PHP Ajout de 15 minutes à la valeur de l'heure

J'ai un formulaire qui reçoit une valeur de temps:

$selectedTime = $_REQUEST['time'];

L’heure est dans ce format - 09h15 - ce qui est 9h15. J'ai ensuite besoin d'ajouter 15 minutes à ceci et de le stocker dans une variable séparée, mais je suis perplexe. 

J'essaie d'utiliser strtotime sans succès, par exemple:

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

mais cela ne va pas analyser. 

17
user982124

Votre code ne fonctionne pas (analyse) car vous avez à la fin un ) supplémentaire qui provoque un Erreur d'analyse . Comptez, vous avez 2 ( et 3 ). Cela fonctionnerait bien si vous corrigez cela, mais strtotime() renvoie un horodatage. Pour obtenir une heure lisible par l'homme, utilisez date().

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

Obtenez un éditeur qui mettra en évidence la syntaxe et montrera des parenthèses, des accolades, etc. sans correspondance.

Pour simplement faire du temps sans TZ ni DST et ajouter 15 minutes (lisez le commentaire de zerkms):

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

Pourtant, le ) est le principal problème ici.

48
AbraCadaver

Bien que vous puissiez le faire via les fonctions de temps de PHP, laissez-moi vous présenter la classe DateTime de PHP, qui, avec ses classes associées, devrait vraiment figurer dans la boîte à outils de tout développeur 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');

Notez que si vous cherchez à fournir une fonction d’horloge de 12 ou 24 heures à laquelle vous pouvez ajouter/soustraire l’heure sans vous soucier de la date, vous souhaitez ainsi éliminer les problèmes éventuels liés à l’heure avancée. je recommanderais un des formats suivants:

!g:i:s Format de 12 heures sans zéros à l’heure

!G:i:s Format 12 heures avec des zéros non significatifs

Notez l'élément ! au format. Cela définirait le composant date au premier jour de Linux Epoch (1-1-1970)

8
Mike Brant

Pour développer les réponses précédentes, une fonction permettant de faire ceci pourrait fonctionner comme ceci (changer les formats d'heure et d'intervalle comme vous les aimez selon this pour function.date et this pour DateInterval ):

(J'ai aussi écrit un une forme alternative de la fonction ci-dessous ici .)

// 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;
2
FirstFraktal

strtotimeretourne l'horodatage actuel etdateformate l'horodatage

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

Cela ajoutera 15 minutes à l'heure actuelle

0
Nishan