我想将过期时间存储在数据库中。我使用以下代码存储到期时间为+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。
感谢。
答案 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