strtotime函数返回01/01/70,有效输入

时间:2013-10-27 08:35:30

标签: php date

我有一个有varchar类型的数据库列的有效日期,全部是d / m / y格式。然后,当我尝试将其转换为带有strtotime函数和日期格式化的日期格式时,我得到01/01/70。我甚至试图用纯字符串值替换数据库结果。 我搜索并找到了这个链接 PHP strtotime returns a 1970 date when date column is null PHP : strtotime() returns always 01/01/1970 strtotime() does not return correct value when specifying date in dd/mm/yyyy format 但由于数据不为空且格式有效,因此两者都没有用。这是我的代码片段

if(isset($item['prep_date']) && $item['prep_date'] != NULL){
    $trial=$item['prep_date'];
    echo ": ".$trial;
    $prepDate= strtotime($trial);
    $prepDate = date('d/m/y', $prepDate);
    echo "= ".$prepDate;
}

我缺少什么?这是两个回声的结果

28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 03/01/13= 01/03/13: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 18/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 02/09/13= 09/02/13: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 05/11/13= 11/05/13: 28/10/13= 01/01/70: 28/11/13= 01/01/70: 05/11/13= 11/05/13: 28/10/13= 01/01/70: 28/10/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 05/11/13= 11/05/13: 11/12/13= 12/11/13: 11/12/13= 12/11/13: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 11/12/13= 12/11/13: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 28/11/13= 01/01/70: 30/01/14= 01/01/70

1 个答案:

答案 0 :(得分:5)

由于您的strtotime()返回false

,因此您获得1970年的价值
var_dump( strtotime('28/11/13') ); # false

看看supported date and time formatsstrtotime这是美国的月,日和年(mm/dd/yyyy),就像here一样。

如果输入格式为dd/mm/yyyy,则最简单的方法是使用strtotime上的DateTime::createFromFormatstr_replace('/', '.', 'dd/mm/yyyy');将其设为欧洲日期格式dd.mm.yyyy。< / p>