strtotime() & date() weird behaviour when converting date in to same format as it was before

后端 未结 2 1327
独厮守ぢ
独厮守ぢ 2020-12-10 20:02

I have to convert date format in to mm-dd-yyyy I don\'t know what is the current date format it is dynamic so if I have dynamic date format is already in

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

    Replacing - with / for m-d-Y will help.

    echo date('m-d-Y',strtotime(str_replace('-', '/', $date)));
    
    0 讨论(0)
  • 2020-12-10 20:34

    I strongly suspect that this is what's causing the problem:

    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.

    (Found in the strtotime documentation.)

    You've got dash separators, so it's assuming d-m-y format, parsing it as a month of 13, and thus effectively failing.

    Options I can think of off the top of my head, without being a PHP developer:

    • If there's a function which allows you to explicitly say what format the string is in, use that.

      For example DateTime::createFromFormat()

    • Change your format to use slashes
    • Change your format to use d-m-y instead of m-d-y
    0 讨论(0)
提交回复
热议问题