0

我想将过期时间存储在数据库中。我正在使用下面的代码来存储 +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。Aslo 不确定它的 Am 或 Pm 。

谢谢。

4

3 回答 3

0

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

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

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

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

于 2013-08-10T08:14:19.153 回答
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;


?>

您可以为您的位置设置时区。还可以参考这个键盘-FIDDLE

于 2013-08-10T08:26:07.177 回答
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
于 2013-08-10T08:27:30.490 回答