doupian9490 2014-04-30 16:18
浏览 10

从三个半月前获取日期

I know I can do

$threemonthsago = date("Y-m-d", strtotime("-3 month"));
echo "$threemonthsago";

However I want to get 3.5 months ago not three months ago. So I tried to do

$threemonthsago = date("Y-m-d", strtotime("-3.5 month"));
echo "$threemonthsago";

However it does not seem to give me the correct date its giving me like September something which it should not be since its currently April.

  • 写回答

1条回答 默认 最新

  • duandanxiu6965 2014-04-30 16:20
    关注

    The decimal throws off strtotime() as that is not a valid format it recognizes. The real issue you have is what exactly is half of a month? If you traverse February it gets really dicey.

    This is somewhat easier to do using DateTime() and DateInterval() if you specify exactly what half of a month is:

    $date = new DateTime();
    $new_date = $date->sub(new DateInterval('P3M15D'));
    echo $new_date->format('Y-m-d');
    

    Demo

    评论

报告相同问题?