【发布时间】:2013-10-27 08:35:30
【问题描述】:
我有一个来自 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 但两者都没有帮助,因为数据不为空并且格式有效。这是我的代码的 sn-p
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
【问题讨论】:
-
能否请您 echo 或 var_dump($item['prep_date']) 并发布结果?
-
28/11/13被视为11th day of 28th month(令我惊讶的是,从03/01/13= 01/03/13结果对您来说并不明显)。如果你想要day month year顺序 - 使用点,而不是斜线 -
是的,使用 4 位数年份也是一个非常好的习惯
-
@zerkms 我专门给了 d/m/y 来指定第 11 个月的第 28 天。这怎么可能
-
@altsyset:我不明白。 “strtotime function return 01/01/70 with valid input”---不正确,没有第 28 个月(在这个星球上)。 “我专门给了 d/m/y 来指定第 11 个月的第 28 天”——不,你这样做是为了 FORMATTING,AFTER 解析