Sectona
Sectona

Reputation: 98

Setting Php and Mysql timestamp

I need to set timestamp eg. 4 hours ahead and 2 hours ahead separately

In my database, I have their columns as timestamp.

I know I could do something similar to this but am not sure if it's correct.

// For 4 hours ahead of time

$dt2 = date("Y-m-d 04:i:s");


//For 2 days ahead

$dt2 = date("Y-m-02 H:i:s");

Upvotes: 2

Views: 132

Answers (4)

René Höhle
René Höhle

Reputation: 27325

In my mind it's much better to work with DateTime field and the DateTime class.

You have the ability so modify that objects very easily. For example:

$aktDate = new \DateTime();

Now you have the actual date and time in an object. If you want you can put a string insight the DateTime function so set your date manually.

$aktDate = new \DateTime('Y-m-d 04:i:s');

Not you can modify your dates if you want with the modify function.

in your case:

$pastDate = clone $aktDate;
$pastDate->modify('+2 days');

$futureDate = clone $aktDate;
$futureDate->modify('+4 days');

if($pastDate < $aktDate && $aktDate < $futureDate) {
    // do something
}

I like the DateTime function much more because it's readable and you can work directly with your DateTime fields from your MySQL database if you have such fields. You can write that example much shorter but so you have better readability.

Upvotes: 2

andrew
andrew

Reputation: 2098

You need to use the strtotime() function (http://php.net/manual/en/function.strtotime.php).

For your examples:

//+2 hours<br>
strtotime("+2 hours");

// +2 days<br>
strtotime("+2 days")

Edit: for what you ask, about posted values, the syntax is like this:

strtotime("+2".$_POST['field_name']." days");

You can use hours/days/months/weeks/years and either + or -

Upvotes: 0

sas
sas

Reputation: 2597

$date = new DateTime('now');
$date->modify('+2 days');
echo $date->format('Y-m-d H:i:s');

$date = new DateTime('now');
$date->modify('+4 hours');
echo $date->format('Y-m-d H:i:s');

Upvotes: 0

Brock Amhurst
Brock Amhurst

Reputation: 497

//For 4 hours ahead of time
$dt2 = date("Y-m-d H:i:s", strtotime('+4 hours'));

//For 2 days ahead of time
$dt2 = date("Y-m-d H:i:s", strtotime('+2 days'));

Upvotes: 2

Related Questions