2010-11-19 122 views
0

我是PHP的日期()和strtotime的新手,并一直试图找出解决方案,这一天的大部分时间没有真正的解决方案(我来了关闭,但无济于事)。MySQL日期时间和当前日期时间函数

我所拥有的是一个典型的数据库行,有一个'已提交'列,通过提交= NOW()(以日期时间格式)输入。我试图获取当前日期时间,并在“x小时和x分钟”中找到两个值之间的差异。为了让事情变得更有趣一些,我的网络服务器在时区之后是一小时。我试过了“date_default_timezone_set('EST');”它确实有助于完成直接的date()函数,但显然无法帮助我处理已插入的日期时间。

$lastEntryDate = date('l, F dS Y', strtotime($entryDate)); 
$lastEntryTime = date('g:ia', strtotime($entryDate.'+1 hour')); 

$currDate = date('l, F dS Y'); 
$currTime = date('g:ia'); 

所以,试着做$ lastEntryTime - $ currTime,但显然得到弄糟根据一天的时间(因为它是24小时制,我相信)。

我搜索了一下,在论坛上发现了一些帖子,指出使用3600(一小时内的秒数),而且我仍然试图围绕这一点进行包装。

有什么基本我失踪了?或者这是相当复杂的,因为我认为它是?

回答

1
$now = time(); 
$entrytime = strtotime($entryDate) + (60 * 60) //60 seconds times 60 minutes = 1 hour 

$difference = $now - $entrytime; 
$hours = floor($difference/(60 * 60)); 
$minutes = $difference - ($hours * 60 * 60); 
+0

这太棒了!使用上面的代码,看起来它会返回时间之间的整个小时或整个分钟。这是一个激动人心的人,你如何找到时间之间的几分钟?恩。 5小时34分钟 – Brian 2010-11-19 04:44:54

+0

它稍微复杂一些,但基本上你可以把这两个时间戳之间的差异化,然后通过将差值除以3600(60秒* 60 = 1小时)找到多少个小时,然后将余数和把它除以60,给你分钟。无论如何,我希望我的数学在那里是正确的。希望这可以帮助。 – 2010-11-19 05:01:27

+0

Brian,'echo'$ hours hours $ minutes minutes“;'。我计算了小时和分钟部分,但我没有测试。这很简单,如果它很混乱,你可以把它写在纸上。您有几秒钟的时间,并通过反复除以60得到相等的分钟数或小时数。 – 2010-11-19 05:28:57

0

,可能会对你有所帮助的解决方案是,而不是使用MySQL现在运作为什么不把你的提交INT类型的字段,然后使用PHP time()函数存储一个UNIX时间戳,然后在将其插入数据库之前,只需在秒内添加1小时即可获得时间戳。然后当你从你的表中检索数据时,你应该能够使用时间戳和php日期和时间函数来创建你想要的任何时间戳。这里是一个关于php time()函数的链接,可能有帮助: http://php.net/manual/en/function.time.php

+0

谢谢!肯定会通过这个。谢谢!! – Brian 2010-11-19 04:35:37