Harish Kurup
Harish Kurup

Reputation: 7525

How to get next Date with specific time in PHP

I want to get the date with specific day and time in PHP, like i want the date of next day and time of 9.30 am i.e "2011-06-02 09:30:00". the code i was using get to do that,

<?php
   $next_day_date = date("Y")."-".date("m")."-".(date("d")+1)."  09:30:00";
   $new_trig_time_stamp = strtotime($next_day_date);
   $trigger_date_time = date("Y-m-d H:i:s",$new_trig_time_stamp);
   echo $trigger_date_time;
?>

the code above works fine but fails on 31 day, on 31st it returns "1970-01-01 05:30:00". Is there any other way to do so.

Upvotes: 4

Views: 11443

Answers (5)

binaryLV
binaryLV

Reputation: 9122

echo date('Y-m-d', strtotime('+1 day')) . ' 09:30:30';

Upvotes: 1

mkilmanas
mkilmanas

Reputation: 3485

When shifting dates by a fixed number, it's better to use mktime(), because it handles invalid dates well (e.g. it knows that January 32 is in fact February 1)

$trigger_date_time = date("Y-m-d H:i:s", mktime(9,30,0, date('n'), date('j')+1, date('Y'));

Upvotes: 6

Adam Wright
Adam Wright

Reputation: 49386

Have a look at date_add.

In more detail, something like...

$myDate = new DateTime("Some time");
$myDate->add(new DateInterval("P1D"));

You can then use $myDate->format(…) to extract formatted representations.

Upvotes: 0

Mat
Mat

Reputation: 6725

strtotime() is very useful here.

$trigger_date_time = date( "Y-m-d H:i:s", strtotime( "tomorrow 9:30" ) );

Upvotes: 3

SergeS
SergeS

Reputation: 11799

Calculate it via unix timestamp - much less annoyance

<?php
   $trigger_date_time = date("Y-m-d 09:30:00",time() + 60*60*24);
   echo $trigger_date_time;
?>

Upvotes: 1

Related Questions