PHP strtotime for June returns July

前端 未结 3 2078
予麋鹿
予麋鹿 2021-01-17 23:09

I\'m stumped as to why the following PHP strtotime function returns \'07\' as the month number, rather than \'06\' when $monthToGet = \'June\':

$monthToGet =         


        
3条回答
  •  终归单人心
    2021-01-17 23:43

    TL;DR

    You are right

    echo date("m", strtotime("June"));
    -> 07
    

    However, this does work:

    echo date("m", strtotime("1. June 2012"));
    -> 06
    

    The problem explained

    Today is 31. July 2012 and since you provide only a month, the current day and current year are used to create a valid date.

    See the documentation:

    NOTE

    The function expects to be given a string containing an English date format and will try to parse that format into a Unix timestamp (the number of seconds since January 1 1970 00:00:00 UTC), relative to the timestamp given in now, or the current time if now is not supplied.

    Alternatives

    You could use date_parse_from_format() or strptime() to achieve what you want with a slightly different approach.

    (Thanks to johannes_ and johann__ for their input)

提交回复
热议问题