与strtotime PHP的错误

时间:2011-06-30 05:57:45

标签: php strtotime

echo date("m", strtotime("january"));

按预期返回01

echo date("m", strtotime("february"));

但这会返回03

其他人遇到过这个问题吗?

PHP Version 5.1.6

2 个答案:

答案 0 :(得分:24)

今天是29日。今年2月没有29日,因为你没有在2月指定一天,所以它正在使用“今天”。 strtotime函数使用相对日期,因此2月29日基本上是今年3月1日。

解决您的问题:

echo date("m", strtotime("February 1"));

答案 1 :(得分:0)

由于strtotime()仅处理英文日期格式,您应该尝试使用我刚刚为您制作的此功能。有了这个,您也可以使用其他语言处理月份名称。

不知道这对您的申请是否必不可少,但现在您已经拥有它。

function getMonth($month, $leadingZero = true) {
    $month = strtolower(trim($month)); // Normalize

    $months = array('january' => '1',
                    'february' => '2',
                    'march' => '3',
                    'april' => '4',
                    'may' => '5',
                    'june' => '6',
                    'july' => '7',
                    'august' => '8',
                    'september' => '9',
                    'october' => '10',
                    'november' => '11',
                    'december' => '12',
                    'dezember' => '12', // German abrevation
                    'marts' => '3', // Danish abrevation for March 
                   );

    if(isset($months[$month])) {
        return $leadingZero ? substr('0' . $months[$month], -2) : $months[$month];
    } else {
        return false;
    }
}