如何存储到期时间?

时间:2013-08-10 07:56:22

标签: php time

我想将过期时间存储在数据库中。我使用以下代码存储到期时间为+1年。

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

但它没有存储存储2014-08-10 07:55:14的正确时间,但存储时间为2014-08-10 01:25:14。 不确定是Am还是Pm。

感谢。

3 个答案:

答案 0 :(得分:0)

PHP中的时间/日期函数使用时区来确定您的本地时间。因此,如果您的服务器位于时区GMT + 6,这意味着date()函数将返回GMT前6小时的日期/时间。

您可以查看date_default_timezone_set()功能手册,了解PHP如何选择您的时区。

要设置您的时区,您可以在调用日期功能之前使用date_default_timezone_set(),或者您可以将php.ini设置date.timezone设置为您的时区。

对于问题的第二部分 - 使用date()函数格式化时间时,H格式字符将返回带有前导零的24小时格式的小时。

答案 1 :(得分:0)

试试这个

<?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;


?>

您可以为您的位置设置timezone。另请参阅此codepad-FIDDLE

答案 2 :(得分:0)

正如其他人所说,它是根据您的服务器(本地)时间计算时间。 我建议您将时间存储在GMT中,然后根据需要将其调整到所需的时区。

您可以使用strtotime()从现在开始计算1年(无需自行计算)并使用gmdate()获取GMT时间戳。

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

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