IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

fonctions qui permettent de transformer une date et un temps sur un site


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 243
    Points : 65
    Points
    65
    Par défaut fonctions qui permettent de transformer une date et un temps sur un site
    Bonjour,

    Je cherche les 2 fonctions qui permettent de transformer une date et un temps sur un site
    a) changement de date au 16/05/2018 à partir de 2018-05-16 12:37:28
    b) pour voir un temps de HH:MM:SS depuis PT4M32S - PT12M55S => 00:12:55?

    Merci pour votre aide
    @+

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 243
    Points : 65
    Points
    65
    Par défaut
    Pour la 1ère c'est bon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function add_custom_import_date_format( $value ) {
            if ( empty( $value ) ) {
                    return $value;
            }
            return date( "d/m/Y", strtotime( $value ) );
    }
    Il en manque une :-)

  3. #3
    Membre confirmé Avatar de ma5t3r
    Homme Profil pro
    Développeur freelance
    Inscrit en
    Mai 2015
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 320
    Points : 492
    Points
    492
    Par défaut
    Bonjour,
    C'est un format natif DateInterval.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $i1 = 'PT4M32S';
    $d1 = new DateInterval($i1);
    var_dump($d1);
    ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    object(DateInterval)[4712]
      public 'y' => int 0
      public 'm' => int 0
      public 'd' => int 0
      public 'h' => int 0
      public 'i' => int 4
      public 's' => int 32
      public 'f' => float 0
      public 'weekday' => int 0
      public 'weekday_behavior' => int 0
      public 'first_last_day_of' => int 0
      public 'invert' => int 0
      public 'days' => boolean false
      public 'special_type' => int 0
      public 'special_amount' => int 0
      public 'have_weekday_relative' => int 0
      public 'have_special_relative' => int 0
    Y a plus qu'à écrire ta fonction :-)

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 243
    Points : 65
    Points
    65
    Par défaut
    Bonsoir,
    Euh je comprends vaguement.
    Comme l'autre je dois faire un return de mon bon format, mais je ne comprends pas trop ton code car cela fait longtemps que je ne touche plus trop au php et notamment ou mettre l'objet?
    @+

  5. #5
    Membre confirmé Avatar de ma5t3r
    Homme Profil pro
    Développeur freelance
    Inscrit en
    Mai 2015
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 320
    Points : 492
    Points
    492
    Par défaut
    Tu formates un DateInterval "de la même manière" qu'un DateTime.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function myFunction($period) {
          //'PT4M32S';
          //ICI, tu mets tes tests de validité en place
          $di = new DateInterval($period);
          return $di->format('H:i:s');
    }

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 243
    Points : 65
    Points
    65
    Par défaut
    Bonjour
    Ok merci.Finalement c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function transform_duree($value) {    
          if ( empty( $value ) ) {
                    return $value;
            }
     
          $di = new DateInterval($value);
          return $di->format('%H:%I:%S');
    }

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 243
    Points : 65
    Points
    65
    Par défaut
    Bonjour,
    Dans le même genre que la 1ère fonction réalisée je m'aperçois que j'ai aussi d'autre format long de date au 16/05/2018 à transformer à partir de 05 mars 2020 à 11h25 mais sans avoir besoin de l'heure !
    la fonction précédente ne fonctionne pas.
    @+

  8. #8
    Membre confirmé Avatar de ma5t3r
    Homme Profil pro
    Développeur freelance
    Inscrit en
    Mai 2015
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 320
    Points : 492
    Points
    492
    Par défaut
    1)
    J'ai bien peur qu'il faille "triturer" la chaîne de caractères pour arriver à tes fins.
    DateTime ne reconnaîtra pas cette syntaxe (05 mars 2020 à 11h25).
    C'est un exercice sympathique.


    2)
    Ce test n'est pas suffisant et n'intercepte pas toutes les erreurs possibles.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if ( empty( $value ) ) {
        return $value;
    }
    3)
    D'où viennent ces différents formats ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 243
    Points : 65
    Points
    65
    Par défaut
    Bonjour,

    1/ ah mince si je comprends bien il n'y a pas de format ou transformation simple, il faudrait identifier chaque chaîne ou par regExp ?
    2/ j'ai vu cela https://php.developpez.com/faq/?page=dates#date_valide mais pas compris la différence entre les 2?
    3/ j'ai des sources différentes puis j'importe cela avec une extension dans un cms jooma
    a) tableur rempli par des personnes. Le format est avec "/" mais là c'est simple je peux faire un remplace avec "-"
    b) export csv d'un plugin vidéo
    c) export csv d'articles wordpress

    @+

  10. #10
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    salut,

    PHP te fournit la bibliothèque ICU pour faire mumuse avec ce genre de format.
    Tiens regarde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $str = '05 mars 2020 à 11h25';
    $fmt = new IntlDateFormatter('fr_FR', IntlDateFormatter::NONE, IntlDateFormatter::NONE);
    $fmt->setPattern("dd MMMM y 'à' HH'h'mm");
    $date = DateTime::createFromFormat('U', $fmt->parse($str));
    echo $date->format('Y-m-d');
    Avec tous les formats possibles par ici

  11. #11
    Membre confirmé Avatar de ma5t3r
    Homme Profil pro
    Développeur freelance
    Inscrit en
    Mai 2015
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 320
    Points : 492
    Points
    492
    Par défaut
    Bon à savoir rawsrc

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/07/2015, 15h05
  2. Réponses: 2
    Dernier message: 21/04/2014, 21h26
  3. fonction qui le jour d'une date
    Par zangaloni dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/04/2011, 22h01
  4. [PHP 5.2] fonction permettant de verifier une date
    Par marclas dans le forum Langage
    Réponses: 3
    Dernier message: 14/10/2010, 08h41
  5. Une fonction qui permette d'ajouter des séparateurs...
    Par Empty_body dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/04/2006, 13h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo