/** * Permet de convertir Datetime ISO 8601 (YYYY-MM-DD hh:ii:ss ou YYYY-MM-DDThh:ii:ssZ) en DateTime local * eg (dd/mm/yyyy) * @param string $pIsoDateTime la date au format ISO 8601 à convertir * @param string $pSeparator le séparateur que l'on va utiliser pour générer la date finale. */ public static function ISODateTimeToDateTime($pIsoDateTime, $pSeparator = '/') { //On vérifie que la date donnée est remplie if ($pIsoDateTime !== false && ($pIsoDateTime === null || strlen($pIsoDateTime = trim($pIsoDateTime)) === 0)) { return null; } if (strpos($pIsoDateTime, "T") !== false) { $delimiter = "T"; } elseif (strpos($pIsoDateTime, " ")) { $delimiter = " "; } else { return false; } list($date, $time) = explode($delimiter, $pIsoDateTime); //On vérifie que l'heure donnée est correcte if (substr($time, 0, 2) < 0 || substr($time, 0, 2) > 24) { return false; } if (substr($time, 3, 2) < 0 || substr($pIsoDateTime, 3, 2) > 59) { return false; } if (substr($pIsoDateTime, 6, 2) < 0 || substr($pIsoDateTime, 6, 2) > 59) { return false; } if (strlen($date) !== 10 || !@checkdate(substr($date, 5, 2), substr($pIsoDateTime, 8, 2), substr($pIsoDateTime, 0, 4)) || ($pIsoDateTime = strtotime($pIsoDateTime)) === -1) { return false; } //On retourne la date formattée return date(CopixI18N::getDateTimeFormat($pSeparator), $pIsoDateTime); }