PHP strtotime incorrect conversion

前端 未结 2 1673
别那么骄傲
别那么骄傲 2020-12-20 00:57

I have looked in the manuals, It is probably a conversion weirdness but I cannot figure it out. I am getting a date from the user and attempting to validate it in PHP (versi

相关标签:
2条回答
  • 2020-12-20 01:12

    strtotime is magical, but it's not infallible. If you want to guarantee a proper conversion, you should use

    $dt = DateTime::CreateFromFormat('d-m-Y', $startDate);
    

    which lets you specify explicity formats for the input so there's no ambiguity.

    Unfortunately, this is PHP 5.3+ only, and you're stuck on 4.1. Even strfptime() which works similary only came in at 5.1

    I'd strongly suggest updating your PHP version, as 4.x is deprecated and unsupported.

    That being said, I can't see how any kind of conversion ambiguity would convert 2011 into 2008. Timezone differences and day/month oddness would throw off hours and months, but not change things by 3 years.

    0 讨论(0)
  • 2020-12-20 01:32

    By default PHP expects that and number-number-number is Y-m-d and works backwards from there until a date makes sense. You may have to change your locale setting: http://ca.php.net/manual/en/class.locale.php. This should fix the European date format error, but keep in mind that the reverse will now be a problem.

    0 讨论(0)
提交回复
热议问题