Here’s something really easy to screw up:
<?php echo date("Y-m-d H:m:s"); ?>
Spot the mistake? The “m” format code can only mean one thing, which is “months”, not “minutes”. Yet, when you’re writing code in a hurry, it’s so easy to quickly write this code and assume it works. After all, it raises no errors or warnings, and always generates valid datetime strings. It’s just wrong.
Googling for ‘site:github.com “Y-m-d H:m:s” php’ returns hundreds of examples of mistakes. I tried to fix a couple instances but realized that there’s so much abandoned code on Github that it would’ve been useless.
This is a prime example of something that static analysis could warn about: just look for “H:m:s” or “h:m:s” in the first argument to
date. This mistake isn’t limited to PHP, of course, as this Java example shows.