prestashop中的isDate($ date)抱怨为DATE_FORMAT的无效日期(a.date_add,"%d-%b-%Y%h:%i:%s%p")

时间:2016-10-24 10:30:15

标签: php regex prestashop

我希望这个29-Jun-2016 11:47:54 AM格式化我的prestashop网格

如果我在秒之前删除了冒号,则日期功能正常工作,即DATE_FORMAT(a.date_add, "%d-%b-%Y %h:%i%s %p")。但是如果冒号在那里它会验证错误

以下是我的isDate验证功能:

/**
 * Check for date validity
 *
 * @param string $date Date to validate
 * @return bool Validity is ok or not
 */
public static function isDate($date)
{
    if (!preg_match('/^([0-9]{4})-((?:0?[0-9])|(?:1[0-2]))-((?:0?[0-9])|(?:[1-2][0-9])|(?:3[01]))( [0-9]{2}:[0-9]{2}:[0-9]{2})?$/', $date, $matches)) {
        return false;
    }
    return checkdate((int)$matches[2], (int)$matches[3], (int)$matches[1]);
}

2 个答案:

答案 0 :(得分:0)

我不知道如果没有冒号,它对你有什么作用,因为在正则表达式中没有关于idDate个字符的内容,如Jun或AM。

date_add方法可以验证,例如存储在DB中的日期时间。您可以获取date('d-M-Y h:i:s A', $date_add);,验证它然后: signature.setEntityCertificate(cert);

答案 1 :(得分:0)

您可以尝试使用预定义的PrestaShop功能格式化日期。

Tools::displayDate($any_date, $this->context->language->id, true);

您可以通过管理面板中的任何语言编辑不同语言的日期格式(本地化 - >语言 - >编辑任何语言)