web-dev-qa-db-fra.com

PHP: ajouter des secondes à une date

J'ai $adate; qui contient:

Tue Jan 4 07:59:59 2011

Je veux ajouter à cette date ce qui suit:

$duration=674165; // in seconds

Une fois les secondes ajoutées, j'ai besoin du résultat dans le format de date.

Je ne sais pas ce que je fais, mais j'obtiens des résultats étranges.

Remarque: les deux variables sont dynamiques. Maintenant, elles sont égales aux valeurs données, mais la requête suivante aura des valeurs différentes.

30
user523129

Si vous utilisez php 5.3+, vous pouvez utiliser une nouvelle façon de le faire.

<?php 
$date = new DateTime();
echo $date->getTimestamp(). "<br>";
$date->add(new DateInterval('PT674165S')); // adds 674165 secs
echo $date->getTimestamp();
?>
65
Elzo Valugi

Utilisez simplement quelques fonctions Nice PHP date/heure:

$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);
23
DiglettPotato

Étant donné que $adate est un horodatage (si tel est le cas), vous pouvez faire quelque chose comme ceci:

$duration = 674165;
$result_date = strtotime(sprintf('+%d seconds', $duration), $adate);
echo date('Y-m-d H:i:s', $result_date);
11
ncuesta
// add 20 sec to now
$duration = 20;
echo date("Y-m-d H:i:s", strtotime("+$duration sec"));
2
Kristian

Faire ceci:

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

echo date("Y-m-d H:i:s", (strtotime(date($date_now)) + $seconds));
2
user1211927

J'ai un problème avec strtotime() pour résoudre mon problème de ajouter une valeur dynamique de données/temps à l'heure actuelle

C'était ma solution:

$expires = 3600; //my dynamic time variable (static representation here)
$date = date_create(date('Y-m-d H:i:s')); //create a date/time variable (with the specified format - create your format, see (1))
echo date_format($date, 'Y-m-d H:i:s')."<br/>"; //shows the date/time variable without add seconds/time
date_add($date, date_interval_create_from_date_string($expires.' seconds')); //add dynamic quantity of seconds to data/time variable
echo date_format($date, 'Y-m-d H:i:s'); //shows the new data/time value

font: https://secure.php.net/manual/en/datetime.add.php (consultez également le style orienté objet, la solution Elzo Valugi)

(1) https://secure.php.net/manual/fr/function.date.php

0
Carlos Rafael

J'ai fait cet exemple pour un fuseau horaire, mais si vous modifiez certaines parties, cela peut vous aider:

$seconds_to_add = 30;
$time = new DateTime();
$time->setTimezone(new DateTimeZone('Europe/London'));
$time2 = $time->format("Y/m/d G:i:s");
$time->add(new DateInterval('PT' . $seconds_to_add . 'S'));
$timestamp = $time->format("Y/m/d G:i:s");
echo $timestamp;
echo '========';
echo $time2;

Résultat:

2018/06/17 3:16:23========2018/06/17 3:15:53
0
Alexandre Pereira
$current_time_zone = 150;
date("Y-m-d H:i:s",strtotime(date("Y-m-d H:i:s"))+$current_time_zone);
0
Jayesh Paunikar