【问题标题】:How to check if date is today's date with PHP如何使用PHP检查日期是否是今天的日期
【发布时间】:2022-02-06 08:19:13
【问题描述】:

假设我有 4 个日期,今天的日期是 1/7/16:

1/7/16 1:06:02

1/7/16 8:01:24

1/8/16 7:02:23

1/6/16 3:12:34

我怎么只能选择1/7/16 1:06:021/7/16 8:01:24

我可以使用 PHP 中的什么日期函数来仅获取今天的日期?

谢谢!

更新:

这被用作 MYSQL 选择器。

示例:$db->query("DELETE * FROM entry WHERE date='$today'");

这将如何工作?如何让我的 MYSQL 查询仅选择今天的日期?

更新 2: 我试过使用curdate(),但代码不起作用...... 这就是我正在做的:

$db->query("DELETE * FROM entry WHERE date=curdate()"); 

我做错了什么?

最新更新: curdate() 工作正常...

【问题讨论】:

  • Ypu 可以使用 date() 函数。
  • where date=curdate()?

标签: php date


【解决方案1】:

UPDATE:作为 MySQL 查询,您可以这样做:

$db->query("DELETE * FROM entry WHERE DATE(date) = CURDATE()");

CURDATE() 返回今天的日期。

如果你想使用 php,请参阅下面使用 DateTime 类。

$now = new DateTime;
$otherDate = new DateTime('2016-01-01'); // or e.g. 2016-01-01 21:00:02

// Setting the time to 0 will ensure the difference is measured only in days
$now->setTime( 0, 0, 0 );
$otherDate->setTime( 0, 0, 0 );

var_dump($now->diff($otherDate)->days === 0); // Today
var_dump($now->diff($otherDate)->days === -1); // Yesterday
var_dump($now->diff($otherDate)->days === 1); // Tomorrow

【讨论】:

  • date_format 毫无意义。它需要日期/日期时间作为输入,因此将日期格式化为字符串,然后与另一个日期进行比较只是浪费 cpucycles。 where date(datefield)=curdate() 会更好,如果日期字段已经是日期,那么即使只是一个简单的datefield=curdate() 也可以。
  • 感谢 Marc 提供更清洁的替代方案。
  • PHP 代码将检查日期是否在过去 24 小时内,而不是今天!
  • 我在 2018 年 12 月 11 日测试过,结果错误:$now = new DateTime; $otherDate = new DateTime('2018-12-12 01:00:59'); // should be TRUE for 'Tomorrow' var_dump($now->diff($otherDate)->days === 0); // TRUE, wrong var_dump($now->diff($otherDate)->days === -1); // FALSE var_dump($now->diff($otherDate)->days === 1); // FALSE, wrong
【解决方案2】:

schellingerht 的答案是完全正确的,但是

$now = new DateTime;

应该是这样的:

$now = new DateTime('Today');

这将确保选择从今天开始的 0 小时 0 分钟的日期。否则输出可能是Today,即使日期是明天。 希望对您有所帮助!

【讨论】:

    【解决方案3】:

    转换为时间戳,然后仅格式化日期。然后对比今天日期的相同格式:

    var_dump(
             date('Ymd', strtotime('1/7/16 1:06:02')) === date('Ymd')
    );
    

    【讨论】:

      【解决方案4】:

      尝试使用 DATE() (http://www.w3schools.com/sql/func_date.asp)。您不需要将日期转换为字符串 - 这效率不高。

      DELETE FROM yourTable WHERE DATE(yourDateField) = DATE(NOW) 
      

      【讨论】:

        【解决方案5】:

        您可以将今天的日期与Y-m-d 格式进行比较,并使用相同的格式解析您的日期。

        $today = date('Y-m-d');
        $otherdate = date('Y-m-d', strtotime('2022-02-02 16:00:26'));
        
        if($today === $otherdate){
           \\ your code for Today
        } else {
           \\ your code for not Today
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-04-05
          • 2016-03-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-26
          • 2012-01-03
          • 2014-09-13
          相关资源
          最近更新 更多