Problème de format de date

thomslr
Invité n'ayant pas de compte PHPfrance

13 sept. 2019, 19:05

Bonjour à tous !


Je travaille actuellement sur un projet en Wordpress et j'utilise un plugin de réservation.
J'ai besoin d'afficher dans le mail de confirmation la date de réservation au format "mmyy". En fait, cette date servira de code d'accès.

Hors, que j'emploie ->format() ou bien date_format(), on me renvoie, au mieux une chaîne vide, au pire une erreur.
Le site étant déjà en production, ça n'arrange pas l'affaire...

Voici donc la ligne récupérant la date d'arrivée :

$text = str_replace( '[resa_check_in]', $this->format_date( $resa['check_in'] ), $text );

Et l'une de celles que j’utilise pour obtenir ma date au format "mmyy", qui ne me renvoie rien :

$text = date_format(str_replace( '[resa_code]', $this->format_date( $resa['check_in'] ), $text ), 'my');

Les dev du plugin utilisent la fonction format_date() :

public function format_date( $unformatted_date ) {
        $date_settings = json_decode( get_option( 'hb_front_end_date_settings' ), true );
        $locale = get_locale();
        if ( isset( $date_settings[ $locale ]['date_format'] ) ) {
            $date_format = $date_settings[ $locale ]['date_format'];
        } else {
            require_once $this->plugin_directory . '/utils/date-localization.php';
            $date_locale_info = new HbDateLocalization();
            $date_format = $date_locale_info->locale[ $this->get_hb_known_locale( $locale ) ]['date_format'];
        }
        $php_date_format = 'Y-m-d';
        $delimiters = array( '/', '.', '-' );
        foreach ( $delimiters as $delimiter ) {
            if ( strpos( $date_format, $delimiter ) ) {
                $date_format_elements = explode( $delimiter, $date_format );
                $php_date_format_elements = array();
                foreach ( $date_format_elements as $element ) {
                    switch ( $element ) {
                        case 'yyyy': $php_date_format_elements[] = 'Y'; break;
                        case 'mm': $php_date_format_elements[] = 'm'; break;
                        case 'dd': $php_date_format_elements[] = 'd'; break;
                    }
                    $php_date_format = implode( $delimiter, $php_date_format_elements );
                }
                break;
            }
        }
        return date( $php_date_format, strtotime( $unformatted_date ) );
    }

[resa_check_in] ou [resa_code] étant des variables utiliser dans les mails automatiques du plugin. la deuxième est donc celle que je souhaite rajouter.

La solution doit être bête, mais voilà quelques heures que je passe dessus.

Le but n'est pas qu'on code à ma place, mais là... je sèche complètement :(

Merci d'avance :D