date()格式,d-m-Y和d / m / Y之间的差异

时间:2015-11-20 11:41:32

标签: php datetime

这是我的第一篇文章,如果我做错了,那就很抱歉。好吧,我得到了这段代码

$min=date('d-m-Y');

$max=date ('31-12-2015');


function rand_date($min, $max) {


    $min_epoch = strtotime($min);
    $max_epoch = strtotime($max);

    $rand_epoch = rand($min_epoch, $max_epoch);

    return date('d-m-Y H:i:s', $rand_epoch);
}

echo rand_date($min, $max);//return 04-12-2015 07:48:22`

它有效,但问题来自于我使用的格式比我需要的那样(d / m / Y)

$min=date('d/m/Y');

$max=date ('31/12/2015');


function rand_date($min, $max) {


    $min_epoch = strtotime($min);
    $max_epoch = strtotime($max);

    $rand_epoch = rand($min_epoch, $max_epoch);

    return date('d/m/Y H:i:s', $rand_epoch);
}

echo rand_date($min, $max);// Always shows 01/01/1970 01:00:00`.

我需要使用这种格式的作品,所以如果有人回答我的问题,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

使用正斜杠时,PHP日期/时间函数/方法的31/12/2015的默认解释为m/d/Y,使用短划线时为d-m-YY-m-d,如果您check the manual。这就是date('31/12/2015')之类的东西返回false的原因,因为一年中没有第31个月。

如果必须,请使用DateTime::createFromFormat来指定您自己的变体。

实施例

$min = new DateTime;

$max = DateTime::createFromFormat('d/m/Y', '31/12/2015');


function rand_date(DateTime $min, DateTime $max) {
    $min_epoch = $min->getTimeStamp();
    $max_epoch = $max->getTimeStamp();

    $rand_epoch = rand($min_epoch, $max_epoch);

    return (new DateTime("@$rand_epoch"))->format('d/m/Y H:i:s');
}