strtotime的几种用法区别

strtotime不仅可以使用类似Y-m-d此类标准的时间/日期字符串来转化时间戳, 还可以用类似自然语言的来生成时间戳, 类似:

        strtotime('last day');
        strtotime('first day');
        strtotime('+1 day');
        strtotime('-1 week');

对于day和week这种标准大小的时间来说没什么歧义, 但对month这种就很难说了, 到底是+30还是+31甚至是29?

从文档来看, 以下的代码并不能得出正确的上一个自然月或者下一个自然月这样的结果

        strtotime('+1 month');
        strtotime('-1 month');

正确的写法应该是

            $stime = date ( 'Y-m-d', strtotime ( 'first day of last month' ) );
            $etime = date ( 'Y-m-d', strtotime ( 'last day of last month' ) );

此外, 实际使用中还发现last day of last month 和 last day last month结果相差甚远, 猜测last day last month应该是先取昨天, 再取上个月这种逻辑

参考:http://php.net/manual/en/function.strtotime.php

posted @ 2015-04-01 15:45  魔芋红茶  阅读(856)  评论(0编辑  收藏  举报