【问题标题】:How do I test if mysql timestamp is during the day (between 8:00 and 20:00) with php?如何使用php测试mysql时间戳是否在白天(8:00到20:00之间)?
【发布时间】:2023-04-06 13:45:01
【问题描述】:

我正在制作一个在表格中显示一些信息的页面,我希望该表格在夜间的条目上具有较暗的背景。

我在想这样的事情:

    if ( ($timestamp < strtotime('2012-02-16 20:00:00') && ($timestamp > strtotime('2012-02-16 08:00:00') ){}

但我希望它全年 24/7 运行。如何将日期设为任意日期 (* - * - *)?

【问题讨论】:

  • 如果您的目标是全球性的,您可能想要获得世界任何地方的日光计算器类/数据库或日光日历。这样您就可以检查服务器的当前时间并确定您的背景应该有多暗,是否应该有星星等。甚至可以咨询一些天气 API(这可能不是一个好主意)并添加一些云;) :)

标签: php mysql timestamp strtotime


【解决方案1】:

不确定$timestamp 是什么格式,但如果是 Unix 时间戳格式(纪元秒),您可以这样做:

$hour = date('H', $timestamp);
if ($hour >= 8 && $hour < 20)

如果它不是 Unix 时间戳格式,也许您可​​以在查询中使用 UNIX_TIMESTAMP() 函数。

【讨论】:

  • 这会将其限制为一个小时。如果你也需要几分钟呢?
  • OP 要求在 8 到 20 之间。他没有要求分钟。
  • 20:00:00,这个时间确实包括分钟,即使它们现在是 0 ;)
  • sigh...在这里分叉头发。想想他想做什么。他试图确定是在白天还是晚上发生了什么事。在我一生中见过的每一个案例中,它都在一个小时内完成。如果您说白天从早上 8 点 03 分开始用于 OP 的使用,我会觉得很奇怪。对于 OP 的目的,这是一个非常好的和简单的解决方案(可能几乎所有其他应用程序也是如此)。
  • 只需 1 个小改动,19 而不是 20,效果很好,因为如果我选择 20,20:59 仍将被视为白天。 @DainisAbols 我不需要几分钟。
【解决方案2】:
$curtime = date('G', $timestamp);
if ($curtime >= 8 && $curtime <= 20)
{
  //do whatever
}

我建议阅读date()

【讨论】:

    【解决方案3】:

    使用也可以使用mktime()函数来制作时间戳。

    例如,今天晚上 8 点:

    $mktime = mktime(20, 0, 0, date(n), date(j), date(Y)); 
    

    【讨论】:

      【解决方案4】:

      也许你可以只用小时组件来格式化日期

      int(日期('H', $timestamp ))

      并测试这个值

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多