Remplacement de strftime

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Remplacement de strftime

    Bonjour,

    Cette fonction étant obsolète, j'ai cherché comment la remplacer et j'ai trouvé un conseil simple, utiliser date().
    Je précise que je teste en version 4.2.3 et sous PHP 8.1 en local
    J'ai donc fait les remplacements sans d'abord vérifier le résultat, je me suis juste assuré que le message deprecated avait disparu, et je me retrouve avec des dates totalement incorrectes... ;(
    J'obtiens quelque chose comme %am %24-%b-%2022 mais la date passée au Javascript est bien 2022-10-24, c'est donc sa manipulation pour affichage qui est en cause
    Date(e) n'est donc pas la solution.

    Les lignes à corriger sont de ce type (pour un fonctionnement sous Windows ici)
    Code:
    echo sv_encode(iconv(getIconvCharset(), 'UTF-8//IGNORE',strftime($apptpro_config->gad_date_format,(DateAdd("d", $day, strtotime($grid_date))))))."|";
    Que me conseillez-vous ?
    Merci d'avance !

    J'oubliais : dans la configuration du composant, le format défini (normalement converti) est
    %a %d-%b-%Y
    Dernière édition par RobertG à 10/11/2022, 09h13
    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

  • #2
    Bonjour,

    Une précision, la fonction sv_encode a seulement pour rôle le remplacement de l'apostrophe
    function sv_encode($in){
    $in = (str_replace("'", "'", $in));
    return $in;
    }
    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

    Commentaire


    • #3
      Si je remplace le paramétrage de date en "D d-m-Y" pour pouvoir utiliser "date()" à la place de "strftime", j'ai le jour abrégé en anglais, il n'est pas traduit dans la langue définie par setlocale().
      "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
      MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

      Commentaire


      • #4
        J'ai trouvé une solution qui semble quand même bancale, avec "new Date" de Joomla!
        Code:
         $date = new Date(DateAdd("d", $day + 1, strtotime($grid_date)), new DateTimeZone('UTC'));
        echo sv_encode($date->format($apptpro_config->gad_date_format)) ; //,."|";
        Comme on le voit, en plus de changer dans les options de l'extension le paramétrage de la date par défaut ( %a %d-%b-%Y en D d-m-Y), j'ai dû ajouter 1 à la variable "$day" qui est incrémentée lors de la création de la grille d'affichage des offres de rendez-vous, mais c'est bancal car la plage de rendez-vous correspondante est celle du lendemain...
        Et il y a des tas de variables vides à gérer, tolérées en 8.1.
        "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
        MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

        Commentaire


        • #5
          Bonjour Robert,

          Comme je rencontre le même problème que toi pour le passage en PHP8.1 et +, j'ai écrit cette fonction pour UP.
          Elle me permet de conserver les anciens paramètres (options du shortcode). Il me suffit de modifier la fonction appelée.
          Le tableau $fmt_old liste les tags que la fonction prend en compte.
          L'ajout de guillemets simples par la fonction permet la saisie de texte simple dans la chaine format.

          Je suis preneur de toutes remarques et améliorations

          J'ai testé cette fonction sous PHP 7.4.19 et 8.1.6

          Code PHP:
           /* === up_date_format (v2.9)
          * retourne une date formatée et localisée
          * $date : date au format AAAA-MM-JJ HH:MM:SS (celui stocké par Joomla)
          * $format : format sfrftime ou NULL pour %e %B %Y (ex: le %e %B %Y à %k:%M)
          * $locale : le code pays (en_US) ou vide=celui du site
          */
          function up_date_format($date$format=NULL$locale '')
          {
          // le format d'affichage (conversion)
          if (!is_null($format)){
            
          $fmt_old = array('%y','%Y''%m','%b''%B''%d','%e','%a''%A''%l','%I','%k','%H','%M','%P','%p');
            
          $fmt_new = array('yy','yyyy','MM','MMM','MMMM','dd','d''EEE','EEEE','h''hh','H''HH','mm','a''A');
            for( 
          $i=0$i<count($fmt_new); $i++) {
              
          $fmt_new[$i] = '\'' $fmt_new[$i] . '\'';
            }
            
          $format str_replace($fmt_old$fmt_new$format$nbtag);
            if (
          $nbtag) {
              
          $format '\'' $format .'\'';
              
          $format str_replace('\'\''''$format);
            }
          }
          // la locale de Joomla par defaut
          if (empty($locale)) {
            
          $locale JFactory::getLanguage()->getTag();
            
          $locale .= ',' str_replace('-''_'$locale);
          }
          // le formateur et retour
          $fmt datefmt_create($localeIntlDateFormatter::FULLIntlDateFormatter::FULLNULLIntlDateFormatter::GREGORIAN$format);
          return 
          datefmt_format($fmtstrtotime($date));

          UP, le plugin universel à découvrir sur https//up.lomart.fr
          bgMax
          , AdminOrder, MetaData, Zoom, ArtPlug, Custom, Memo, Filter, ... sur http://lomart.fr/extensions

          Commentaire


          • #6
            Bonjour KLoïc,

            J'avais oublié cette discussion !
            En fait, j'ai fait toutes les modifications dans le code, et l'extension fonctionne sauf une ou deux fonctionnalités qui mériteraient une réécriture plus profonde, mais que je n'utilise pas dans mes tests. Et de toute façon, comme je ne serai pas capable d'en gérer l'entretien, cette extension de gestion de rendez-vous va hélas passer aux oubliettes.

            Je ne sais pas sur quoi je pourrais tester ton code, désolé.
            "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
            MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

            Commentaire


            • #7
              Envoyé par RobertG Voir le message
              Je ne sais pas sur quoi je pourrais tester ton code, désolé.
              Ce n'est pas grave du tout
              Ce code pourra (peut-être) servir à quelqu'un.

              Bonne journée

              UP, le plugin universel à découvrir sur https//up.lomart.fr
              bgMax
              , AdminOrder, MetaData, Zoom, ArtPlug, Custom, Memo, Filter, ... sur http://lomart.fr/extensions

              Commentaire

              Annonce

              Réduire
              Aucune annonce pour le moment.

              Partenaire de l'association

              Réduire

              Hébergeur Web PlanetHoster
              Travaille ...
              X