2016-07-05 43 views
0

我有这行代码:PHP的日期添加一天内,从数据库中的信息

<?= date('F dS, Y',$user_info['date_of_birth']) ?> 

它得到每个用户的UNIX的生日日期,并将其转换在一个正常的日期。 唯一的问题是它会提前一天显示。 例如,数据库中的unix日期是1990年5月11日。 在视图中,它将输出,1990年5月10日。 您知道如何解决此问题吗?

在此先感谢

+2

我想看看时区问题。 – chris85

+0

这也许是问题所在。你知道我可以在上面的代码行中添加一天吗? –

+0

不要这样做。解决问题,以便您的时区相匹配。 – chris85

回答

0

要明确地回答你的问题,你可以做到以下几点:

<?=date('F dS, Y',($user_info['date_of_birth'] + 86400))?> 

其中86400是秒在一天的数量。


但是,正如其他人所建议的那样,您可以并且应该将数据库和Php同步到UTC/GMT时间。

对于PHP时区,执行你的脚本的顶部以下内容:

date_default_timezone_set('UTC'); 

对于SQL,这取决于你正在使用的数据库(我不相信你指定你正在使用的数据库)。

+0

谢谢,完美的作品。我现在会看看时区! –

0

检入同步您的MySQL和PHP时区。看看这个类似的问题/回答:

Set timezone in PHP and MySQL

+0

谢谢!对于信息:)但你知道如何在上面的代码行添加+1天吗? –

+0

尝试这样:date('F dS,Y',strtotime($ user_info ['date_of_birth']。'+1 day'))。 – Nick

+0

我同意克里斯,你应该采取步骤来调整时区,所以你不会在应用程序的其他地方遇到类似的问题。 – Nick

0

这可能是你在服务器上的时间错误。是你accesse它外壳可以通过date命令来检查:

[[email protected] ~]$ date 
Tue Jul 5 04:17:00 UTC 2016 

,如果没有,那么你很可能将不得不这样做:如果你有机会到MySQL控制台检查

define('TIMEZONE_OFFSET', 86400); 
<?=date('F dS, Y',($user_info['date_of_birth'] + TIMEZONE_OFFSET))?> 

再次它的时区设置。

set-timezone-in-php-and-mysql

也可手动设置PHP defaulte时区:

date_default_timezone_set('UTC'); 
相关问题