是否有PHP函数来测试零日期

H. *_*nce 31 php datetime

寻找一种速记或更好的方法来测试零日期(MySQL datetime列),而不是:

if ($row['this_date'] == '0000-00-00 00:00:00') echo 'No date set.';
Run Code Online (Sandbox Code Playgroud)

是否有测试它的PHP函数?谢谢.

You*_*nse 19

我想你不需要任何速记.
这是一些微观优化.

你已经花了更多的时间来问这个问题,而不是在一年的平均编码中省去这样的速记.只需写下来继续前进.
你有没有更重要的问题要解决?

而且,通过这种速记,您将混淆自己的代码.
您当前的陈述非常清楚,"if date is empty"
但是所有提议的摘要都不是那么清楚.几个月后来到这个代码,如果这样的代码怪物具有任何特殊含义,你将困惑自己的问题.

你真正想要的是可读性.但你已经拥有它了.虽然所有提议的缩写都没有.

  • 嘿科恩尔.很久没有听到了.我记得你不久前在几个帖子上偷了我.很高兴看到你仍然在那里,有很多时间在你的手上拍摄那些希望探索和学习的人.你的意见总是被预期......继续开火:) (6认同)
  • 完全赞同上校Shrapnel.为什么要让自己更难以在你已经工作的时候浪费时间 (2认同)
  • 我不同意。出于可读性考虑,但是如果格式更改,则必须在代码中更改字符串。 (2认同)

小智 18

关于什么:

if(strtotime($row['this_date']) == 0) echo 'No date set.';
Run Code Online (Sandbox Code Playgroud)

  • strtotime('0000-00-00 00:00:00') == -62169968592 所以它并不总是零。您的默认时区会影响结果。 (2认同)

Khe*_*hez 5

虽然你应该在数据库中使用NULL,但是一个简单的黑客就是:

if(!(int)$row['this_date'])echo'No Date Set.';
Run Code Online (Sandbox Code Playgroud)

你期待找到什么样的更好的方式?这很快.

PS这是一个黑客,因为我假设你将有一年.这意味着它不适用于字符串0000-00-00 00:00:01


syc*_*yck 5

作为正则表达式的粉丝,我将添加另一个:

if (!preg_match('/[1-9]/', $row['this_date'])) echo 'No date set.';
Run Code Online (Sandbox Code Playgroud)
  • 也适用于时间戳和其他东西。
  • 显然不检查日期一致性。