Reputation:
I have a time to which I want to add an hour:
$time = '10:09';
I've tried:
$time = strtotime('+1 hour');
strtotime('+1 hour', $time);
$time = date('H:i', strtotime('+1 hour'));
But none of the above work.
Upvotes: 65
Views: 294099
Reputation: 11
Worked for me
use DateTime::modify
or date_modify
: https://www.php.net/manual/en/datetime.modify.php
// Example:
$timestamp = 1680947903;
// Timestamp to datetime
$date = new \DateTime('@'. $timestamp );
$date->modify('+1 hour');
Upvotes: 1
Reputation: 1
I had a similar problem and the fix was to say “hours” instead of “hour”.
Upvotes: -2
Reputation: 12277
It is weird that no one has suggested the OOP way:
$date = new \DateTime(); //now
$date->add(new \DateInterval('PT3600S'));//add 3600s / 1 hour
OR
$date = new \DateTime(); //now
$date->add(new \DateInterval('PT60M'));//add 60 min / 1 hour
OR
$date = new \DateTime(); //now
$date->add(new \DateInterval('PT1H'));//add 1 hour
Extract it in string with format:
var_dump($date->format('Y-m-d H:i:s'));
Upvotes: 15
Reputation: 85
2021 Update
Worked for me..
$text = str_replace(':PM', '', '19:00:PM'); //19:00:PM //Removes :PM
$text = str_replace(':AM', '', $text); //Removes :AM
$time = strtotime($text); //19:00
$startTime = date("H:i:A", strtotime('- 1 hours', $time));
$endTime = date("H:i:A", strtotime('+ 1 hours', $time));
Output:
echo $startTime; //18:00:PM
echo $endTime; //20:00:PM
Upvotes: -4
Reputation: 41
You can try this code:
$time = '10:09';
echo date( 'H:i', strtotime( '+1 hour' , strtotime($time) ) );
Upvotes: 4
Reputation: 3000
Worked for me..
$timestamp = strtotime('10:09') + 60*60;
$time = date('H:i', $timestamp);
echo $time;//11:09
Explanation:
strtotime('10:09')
creates a numerical timestamp in seconds, something like 1510450372
. Simply add or remove the amount of seconds you need and use date()
to convert it back into a human readable format.
$timestamp = strtotime('10:09') + 60*60; // 10:09 + 1 hour
$timestamp = strtotime('10:09') + 60*60*2; // 10:09 + 2 hours
$timestamp = strtotime('10:09') - 60*60; // 10:09 - 1 hour
time()
also creates a numerical timestamp but for right now. You can use it in the same way.
$timestamp = time() + 60*60; // now + 1 hour
Upvotes: 122
Reputation: 1451
try this it is worked for me.
$time="10:09";
$time = date('H:i', strtotime($time.'+1 hour'));
echo $time;
Upvotes: 18
Reputation: 7055
You can do like this
echo date('Y-m-d H:i:s', strtotime('4 minute'));
echo date('Y-m-d H:i:s', strtotime('6 hour'));
echo date('Y-m-d H:i:s', strtotime('2 day'));
Upvotes: 31
Reputation: 3
Beware of adding 3600!! may be a problem on day change because of unix timestamp format uses moth before day.
e.g. 2012-03-02 23:33:33 would become 2014-01-13 13:00:00 by adding 3600 better use mktime and date functions they can handle this and things like adding 25 hours etc.
Upvotes: -3
Reputation: 23011
$time = '10:09';
$timestamp = strtotime($time);
$timestamp_one_hour_later = $timestamp + 3600; // 3600 sec. = 1 hour
// Formats the timestamp to HH:MM => outputs 11:09.
echo strftime('%H:%M', $timestamp_one_hour_later);
// As crolpa suggested, you can also do
// echo date('H:i', $timestamp_one_hour_later);
Check PHP manual for strtotime(), strftime() and date() for details.
BTW, in your initial code, you need to add some quotes otherwise you will get PHP syntax errors:
$time = 10:09; // wrong syntax
$time = '10:09'; // syntax OK
$time = date(H:i, strtotime('+1 hour')); // wrong syntax
$time = date('H:i', strtotime('+1 hour')); // syntax OK
Upvotes: 16
Reputation: 16446
You can use:
$time = strtotime("10:09") + 3600;
echo date('H:i', $time);
Or date_add
: http://www.php.net/manual/en/datetime.add.php
Upvotes: 1