PHP strtotime incorrect conversion

前端 未结 2 1678
别那么骄傲
别那么骄傲 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.

提交回复
热议问题