PHP strtotime() looks like it is expecting a Euro format

Posted by Jason Rhodes on Stack Overflow See other posts from Stack Overflow or by Jason Rhodes
Published on 2010-02-05T13:33:12Z Indexed on 2010/04/14 1:43 UTC
Read the original article Hit count: 350

Filed under:
|
|

I've been using PHP's strtotime() method to accept a date field on a form. I love how powerful it is, in how it will accept "Tomorrow", "Next Thursday", or (supposedly) any date representation and convert it to the Unix timestamp.

It's been working great -- until yesterday. Someone entered "2-4-10" and instead of logging Feb 4th, 2010, it logged April 10, 2002! So it expected Y-M-D instead of M-D-Y.

I thought maybe the problem was just using a 2-digit year, so we tried again with "2-4-2010". That logged April 2nd, 2010! At that point I just don't understand what strtotime() is doing. PHP.net says it expects a US English date format. Why then would it assume D-M-Y?

Is there a way around this? Or do I have to stop using strtotime()?

Note: I just now did a test. When you use slashes instead of hyphen/dashes, it works fine, even with 2/4/10. Why on earth does that matter? And if that's all it is, should I just run str_replace("-", "/", $input) on the form input before passing it to strtotime()?

© Stack Overflow or respective owner

Related posts about php

Related posts about strtotime