PHP - Using strtotime with a UK date format (dd-mm-yy)

后端 未结 3 1798
面向向阳花
面向向阳花 2021-01-04 10:38

Quite simply in PHP I have a date of 8th January 2011, in the format 08-01-11 - when I run this into strtotime and convert it back into a different date format, it reverts b

相关标签:
3条回答
  • 2021-01-04 10:44

    From the PHP manual:

    "Dates in the m/d/y or d-m-y formats are disambiguated by looking at the separator between the various components: if the separator is a slash (/), then the American m/d/y is assumed; whereas if the separator is a dash (-) or a dot (.), then the European d-m-y format is assumed.

    To avoid potential ambiguity, it's best to use ISO 8601 (YYYY-MM-DD) dates or DateTime::createFromFormat() when possible."

    I replaced slashes with dashes and then strtotime worked as expected for UK dates.

    0 讨论(0)
  • 2021-01-04 10:56

    The perfect solution would be for the US to use the correct date format in the first place... ;0)

    I do this to get around it:

    $date = "31/12/2012";
    $bits = explode('/',$date);
    $date = $bits[1].'/'.$bits[0].'/'.$bits[2];
    

    $date is now strtotimeable

    0 讨论(0)
  • 2021-01-04 11:04

    strtotime() works with US dates only:

    The function expects to be given a string containing a US English date format and will try to parse that format into a Unix timestamp.

    You would have to either rearrange the date format or use date_parse_from_format() (PHP 5.3+) to parse the UK style string.

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