PHP将日期转换为DD-M-YY

PHP将日期转换为DD-M-YY

问题描述:

我想在我的代码中验证像17-JAN-1985那样的日期。PHP将日期转换为DD-M-YY

下面是函数我使用:

function fncDate($date){ 
    $d = DateTime::createFromFormat('DD-M-YY', $date); 
    $result = $d && $d->format('DD-M-YY') == $date; 
    if(!$result){ 
     return "Date should be in the following format: DD-MMM-YYYY"; 
    } 
} 

这总是返回FALSE:fncDate("17-JAN-1985");

难道我做错了什么?

感谢

看起来像你的格式字符串读取(解析)的日期应为'd-M-Y',而不是 'DD-M-YY'。当你比较时,你需要大写双方,因为PHP会生成“Jan”而不是“JAN”。此外,你忘了返回值。

这是完全正常的代码:

function fncDate($date){ 
    $d = DateTime::createFromFormat('d-M-Y', $date); 
    $result = $d && strtoupper($d->format('d-M-Y')) == strtoupper($date); 
    if(!$result){ 
     return "Date should be in the following format: DD-MMM-YYYY";. 
    } 
    return $result; 
} 
+0

我测试了它,它是不会与我已经更新了我的答案格式为 “d-M-Y” –

+0

工作。您可能需要使用不同的格式进行分析,并使用不同的格式重新生成日期,但我不确定这一点,但因为我没有使用这些奇怪的结构。此外,您的生成日期可能具有“Jan”而不是“JAN”,因此您可能需要全部大写以匹配它。 –

+0

是的你是对的谢谢我也注意到了它 –

试试这个:

function fncDate($date) 
{ 
    $date = date_create($date); 

    $date1= date_format($date, 'Y-m-d '); 

    $result = $date1 && $date1 == $date; 

    if(!$result) 
    { 
     echo "Date should be in the following format: DD-MMM-YYYY"; 
    } 
    else 
    { 
     echo "Ok"; 
    } 
}