如何存储到期时间?

I want to store the expiration time in database. I am using the below code to store expiration time with +1 year.

$cdate = time();
$date = $cdate + 365*24*60*60;
$date = date("Y-m-d H:i:s",$date);

but its not storing the correct time it stores 2014-08-10 07:55:14 but time on storing is 2014-08-10 01:25:14. Aslo not sure its Am or Pm .

Thanks.

Time/date functions in PHP are using timezones to determine your local time. So if your server is in timezone GMT+6 that means that the date() function will return you the date/time that is 6 hours before GMT.

You can check the date_default_timezone_set() function manual to find out how PHP is selecting your timezone.

To set your timezone, you can use date_default_timezone_set() before calling date function or you can set you php.ini setting date.timezone to your timezone.

For the second part of your question - when formatting time using the date() function the H format character will return 24-hour format of an hour with leading zeros.

try this

<?php
$timezone1 = "America/Los_Angeles";
date_default_timezone_set($timezone1);

$cdate = time();
$date1 = $cdate + 365*24*60*60;
$date = date("Y-m-d H:i:s a",$date1);
echo $date;

$timezone = "Asia/Calcutta";
date_default_timezone_set($timezone);
$cdate = time();
$date1 = $cdate + 365*24*60*60;
$date = date("Y-m-d H:i:s a",$date1);
echo $date;


?>

you can set timezone for your location.And also refer this codepad-FIDDLE

As others have mentioned, it is calculating the time based on your server (local) time. I suggest you store the time in GMT and then adjust it to your desired timezone as necessary.

You can use strtotime() to calculate 1 year from now (no need to calculate it yourself) and use gmdate() to get the timestamp in GMT.

echo "Next Year in local time: ". date("Y-m-d H:i:s", strtotime("+1 year")) ."
";
echo "Next year in GMT: " . gmdate ("Y-m-d H:i:s", strtotime ("+1 year")) . "
";

// Output:
// Next Year in local time: 2014-08-10 15:25:09
// Next year in GMT: 2014-08-10 08:25:09