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 :

[Date] Conversion String en Datetime


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 15
    Points : 15
    Points
    15
    Par défaut [Date] Conversion String en Datetime
    Bonjour à tous,

    Je cherche à convertir une "chaîne de caractère" sous un format Date et plus spécifiquement sous le format "Y-m-d H:i:s" afin de pouvoir m'en servir pour des calculs.
    Cette fameuse variable "String" est sous cette forme la:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $DateA = $A."-".$J."-".$M." ".$_POST['DateHeureA'].":00";
    Par exemple, si je l'affiche, le résultat sera: Date A = 2013-23-05 00:00:00


    J'ai déjà essayé pas mal de solutions, dont la principal est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $DateAModifiee = date("Y-m-d H:i:s", strtotime($DateA));
    Mais lorsque je l'affiche, cela me donne: DateAModifiee = 1970-01-01 01:00:00

    Est-ce que le format $DateA n'est pas considéré comme chaîne de caractère par la fonction strtotime ? En est il vraiment une ? Je ne sais pas du tout.

    Merci d'avance, j'espere avoir été clair.

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Pourquoi tu n'utilise pas un format standard comme Y-M-D H:i:s ? Il est compris par strtotime celui là.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $DateA = $A."-".$J."-".$M." ".$_POST['DateHeureA'].":00";
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $DateA = $A."-".$M."-".$J." ".$_POST['DateHeureA'].":00";

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Merci pour ta réponse
    En fait, ce n'est pas mon code. Je corrige des bugs sur une appli intranet.
    Et cette partie est la base de tout les calculs/requete SQL. Si je modifie ceci, il faudrait que je change plusieurs lignes de code derrière. Ce serait fastidieux et long. Alors si je dois le faire car il n'y pas d'autre solution, je le ferais, mais j'avoue que ça m'embête un peu.

    Pour info, voici de quoi est composé $DateA:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if ((isset($_POST['DateJourA'])) && (isset($_POST['DateHeureA']))){
    			$date = explode('-', $_POST['DateJourA']);
    			$A = $date[0];
    			$M = $date[1];
    			$J = $date[2];
    			$DateA = $A."-".$J."-".$M." ".$_POST['DateHeureA'].":00";
    }

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Le plus simple serait quand même de changer le format de la chaine pour mettre les éléments dans un ordre plus classique et d'adapter le reste du code en conséquence.
    Mais bon, je connais le principe "si ça marche, on n'y touche pas" qui est appliqué dans pas de mal de situations en maintenance.

    A partir de PHP 5.3.0, tu as DateTime::createFromFormat (si tu utilises DateTime) ou date_parse_from_format (si tu préfères avoir un tableau d'éléments), qui te permet de préciser le format d'origine.

    Si tu travailles avec une version inférieure de PHP, tu vas devoir faire le découpage à la main à coup d'explode et/ou de substr (ou construire une date $dateAbis avec les éléments dans le bon ordre)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Ok, va pour le changement de format pour la chaîne.
    Merci à vous d'avoir pris le temps de me répondre. Passez une bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion string to date
    Par Fanny23 dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 27/01/2012, 00h24
  2. [Date] Conversion String --> date, problème de format
    Par hannibal.76 dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 15/12/2011, 21h54
  3. [VB.net] Conversion String en DateTime
    Par NicoNGRI dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/11/2006, 14h07
  4. [C# 2.0] Conversion string en DateTime
    Par guitoux1 dans le forum Windows Forms
    Réponses: 12
    Dernier message: 08/06/2006, 11h01
  5. conversion String en Date (parse trop permissif)
    Par ciloulou dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 13/09/2004, 18h36

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