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 :

les dates avec Datetime


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut les dates avec Datetime
    Bonjour,
    J'ai pris en route un développement. Dans ce projet une collection de fonctions gère les dates :
    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
    19
    20
    21
    22
    23
    24
    25
    define('USER_DATE', 'd/m/Y');
    define('DB_DATE', 'Y-m-d');
    define('DB_DATE_235959', 'Y-m-d 23:59:59');
    define('USER_DATETIME', 'd/m/Y H:i:s');
    define('DB_DATETIME', 'Y-m-d H:i:s');
     
    function dateToString($date, $format) {
    	if (empty($date)) return '';
    	return $date->format($format);
    }
     
    function stringToDate($string, $format) {
    	$string = trim($string);
    	return DateTime::createFromFormat($format, $string);
    }
     
    function dbToUserDate($date) {
    	$date = dateToString(stringToDate($date, DB_DATE), USER_DATE);
    	return $date == '30/11/-0001' ? '' : $date;
    }
     
    function dbToUserDateTime($date) {
    	$date = dateToString(stringToDate($date, DB_DATETIME), USER_DATE);
    	return $date == '30/11/-0001' ? '' : $date;
    }
    En changeant de serveur d'hébergement, il se pose un problème de version de PHP. La méthode createFromFormat() n'est disponible qu'à partir de PHP 5.3 et moi je suis en 5.2.7. A cet effet, le soucis pour cette collection se situe au niveau de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function stringToDate($string, $format) {
    	$string = trim($string);
    	return DateTime::createFromFormat($format, $string);
    }
    Comment remplacer createFromFormat() par format() pour corriger le soucis ?

    Merci d'avance...

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Format fait l'inverse de createFromFormat.

    Reproduire createFromFormat n'est pas évident, on trouve quelques fonctions maison sur le net mais je ne saurais garantir leur bon fonctionnement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class MyDateTime extends DateTime
    {
        public static function createFromFormat($format, $time, $timezone = null)
        {
            if(!$timezone) $timezone = new DateTimeZone(date_default_timezone_get());
            $version = explode('.', phpversion());
            if(((int)$version[0] >= 5 && (int)$version[1] >= 2 && (int)$version[1] >= 17)){
                return parent::createFromFormat($format, $time, $timezone);
            }
            return new DateTime(date($format, strtotime($time)), $timezone);
        }
    }
     
    $dateTime = MyDateTime::createFromFormat('Y-m-d', '2013-6-13');

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Si les format de date possibles sont ceux défini en début de script tu peux essayer quelque chose à base d'expression régulière.

    Ta solution ne vas fonctionner qu'avec les format compatible avec strtotime, ( les format anglosaxons )

    Ceci étant dit , changer d'hébergeur pour rétrograder la version de PHP qui plus est pour une version obsolète c'est un choix discutable.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Gérer les dates avec dtPicker
    Par crashfire dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/01/2010, 16h33
  2. soustraction avec les dates avec sql access
    Par deuval dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 04/07/2007, 10h03
  3. les dates avec la bibliothèque "time.h"
    Par wakaa3lik dans le forum Bibliothèques
    Réponses: 3
    Dernier message: 29/01/2007, 18h21
  4. Gérer les dates avec SQL Server 2000
    Par saby dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/01/2006, 18h06
  5. [C#] Calcul sur les dates avec des DateTimePicker
    Par alizee971 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 02/04/2005, 17h14

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