【问题标题】:MySQL datetime and Current Date Time functionMySQL 日期时间和当前日期时间函数
【发布时间】:2010-11-19 04:10:01
【问题描述】:

我是 php 的 date() 和 strtotime 的新手,并且在一天的大部分时间里一直在尝试找出解决方案,但没有真正的解决方案(我已经接近,但无济于事) .

我所拥有的是一个典型的数据库行,其中包含一个“已提交”列,该列是通过提交的=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 小时格式)。

我在 Google 上四处搜索,发现论坛上有几篇帖子表明使用 3600(一小时内的秒数),但我仍在努力解决这个问题。

我缺少一些基本的东西吗?还是我想的那么复杂?

【问题讨论】:

    标签: php mysql


    【解决方案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);
    

    【讨论】:

    • 这太棒了!使用上面的代码,它看起来会返回时间之间的整个小时数或整个分钟数。这是一个 zinger,你如何找到时间之间的分钟到小时?前任。 5 小时 34 分钟
    • 它有点复杂,但基本上你取两个时间戳之间的差异,然后通过将差异除以 3600(60 秒 * 60 = 1 小时)找到多少小时,然后你取余数除以 60 得到分钟数。无论如何,我希望我的数学在那里是正确的。希望这会有所帮助。
    • 布莱恩,echo "$hours hours $minutes minutes";。我计算了小时和分钟部分,虽然我没有测试。这是非常简单的数学,如果您感到困惑,您可以将其写在纸上。您有一定数量的秒数,并通过重复除以 60 得到等于或等于分钟数或小时数。
    • Dan,我回应了这一点(回显“自从您上次输入以来已经是“.$hours.”小时和“.$minutes.”分钟数”;)它显示如下:(它一直是自您上次进入后 1 小时 2570 分钟)。虽然 2570 每秒增加一个 ...
    • 我想我可能有它... $difference = $now - $entrytime; $hours = floor($difference / 3600); $seconds = $difference - ($hours * 3600); $minutes = round($seconds / 60);
    【解决方案2】:

    一个可能对您有帮助的解决方案是,而不是使用 MySQL now 函数为什么不将您提交的字段设为 INT 类型,然后使用 php time() 函数在其中存储一个 unix 时间戳,然后再将其插入数据库只需在时间戳中添加 1 小时(以秒为单位)。然后,当您从表中检索数据时,您应该能够使用时间戳和 php 日期和时间函数来创建您想要的任何时间戳。这是 php time() 函数的链接,可能会有所帮助: http://php.net/manual/en/function.time.php

    【讨论】:

    • 谢谢!肯定会经历这个。谢谢!!
    猜你喜欢
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多