Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/08/2008, 00h19   #1
Membre confirmé
 
Inscription : mai 2002
Messages : 546
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 546
Points : 238
Points : 238
Par défaut Conversion de dates

Bonjour,

Dans mon CMS, je voudrais modifier la façon de convertir les dates entre le format utilisé dans les bases de données (yyyy-mm-dd) et le format d'une langue donnée (par exemple dd/mm/yyyy). Actuellement, j'inclus un fichier PHP correspondant à la langue sélectionnée (par exemple fr_FR.php) qui définit entre autres deux fonctions dateFromSQL() et dateToSQL() qui me permettent de convertir les dates dans les deux sens. Ces fonctions utilisent des expressions rationnelles.

Ce que je voudrais faire, c'est lire un fichier de paramétrage contenant simplement une chaîne donnant le format de date à afficher (par exemple 'd/m/Y') et utiliser ce format dans des fonctions chargées de convertir les dates. En effet, j'aimerais que les fichiers de localisation puissent être créés par quelqu'un ne connaissant ni le PHP ni les expressions rationnelles.

J'ai beau chercher, je n'ai pas trouvé de solution. Les méthodes proposées dans les tutoriels du site ne me conviennent pas.
Neuromancien2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2008, 09h09   #2
Expert Confirmé
 
Avatar de Sub0
 
Homme
Inscription : décembre 2002
Messages : 3 468
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39

Informations forums :
Inscription : décembre 2002
Messages : 3 468
Points : 3 115
Points : 3 115
Envoyer un message via MSN à Sub0 Envoyer un message via Skype™ à Sub0
Citation:
Ce que je voudrais faire, c'est lire un fichier de paramétrage contenant simplement une chaîne donnant le format de date à afficher (par exemple 'd/m/Y') et utiliser ce format dans des fonctions chargées de convertir les dates. En effet, j'aimerais que les fichiers de localisation puissent être créés par quelqu'un ne connaissant ni le PHP ni les expressions rationnelles.
Comme ça ?
Code :
1
2
3
4
function convertdate($mydate,$format){
   @list($annee,$mois,$jour)=explode('-',$mydate);
   return @date($format,mktime(0,0,0,$mois,$jour,$annee));
}
Exemple :
Code :
1
2
3
$date='2008-08-02';
$date=convertdate($date,'d/m/Y');
echo $date;
Sub0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2008, 09h56   #3
Membre du Club
 
Inscription : juillet 2008
Messages : 39
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 39
Points : 43
Points : 43
(Pourquoi les @ ? Masquer les erreurs potentielles s'avère rarement être une bonne idée.)
ddong est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2008, 10h09   #4
Expert Confirmé
 
Avatar de Sub0
 
Homme
Inscription : décembre 2002
Messages : 3 468
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39

Informations forums :
Inscription : décembre 2002
Messages : 3 468
Points : 3 115
Points : 3 115
Envoyer un message via MSN à Sub0 Envoyer un message via Skype™ à Sub0
Oui, lorsqu'on met au point son code mais pas une fois déployé. L'arobas sert surtout à masquer les warnings dans le cas où la date fournie serait invalide, malgré que cette fonction retournera dans tous les cas une date corrigée... En général, la gestion des erreurs, je m'en occupe personnellement dans mes sources; Je ne veux pas que mes visiteurs se retrouvent avec des messages d'erreurs de php qui ne comprendront pas... Mais bon, chacun est libre de faire comme il veut.
Sub0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2008, 10h17   #5
Membre du Club
 
Inscription : juillet 2008
Messages : 39
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 39
Points : 43
Points : 43
Je pense qu'il vaut bien mieux voir des messages d'erreur qu'on ne comprend pas (encore qu'ils sont souvent relativement clairs), et du coup s'atteler à traiter le cas d'erreur qu'on n'avait pas envisagé, plutôt que de tout masquer.

(Évidemment, tout ça c'est en mode développement. En prod, on s'assurera que la directive display_errors est à faux.)

edit: ah bah, j'avais pas vu ton edit.
ddong est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2008, 10h18   #6
Expert Confirmé
 
Avatar de Sub0
 
Homme
Inscription : décembre 2002
Messages : 3 468
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39

Informations forums :
Inscription : décembre 2002
Messages : 3 468
Points : 3 115
Points : 3 115
Envoyer un message via MSN à Sub0 Envoyer un message via Skype™ à Sub0
Citation:
Envoyé par ddong Voir le message
(Évidemment, tout ça c'est en mode développement. En prod, on s'assurera que la directive display_errors est à faux.)
Exactement!
Citation:
Envoyé par ddong Voir le message
edit: ah bah, j'avais pas vu ton edit.
Oui, j'ai voulu être un peu plus clair dans mes propos.
Sub0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2008, 14h43   #7
Membre confirmé
 
Inscription : mai 2002
Messages : 546
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 546
Points : 238
Points : 238
Citation:
Envoyé par Sub0 Voir le message
Comme ça ?
Code :
1
2
3
4
function convertdate($mydate,$format){
   @list($annee,$mois,$jour)=explode('-',$mydate);
   return @date($format,mktime(0,0,0,$mois,$jour,$annee));
}
Exemple :
Code :
1
2
3
$date='2008-08-02';
$date=convertdate($date,'d/m/Y');
echo $date;
En fait le problème est surtout de pouvoir convertir les dates dans l'autre sens, du format local vers le format utilisé par la base de données. Or strptime() n'est pas portable.
Neuromancien2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h40.


 
 
 
 
Partenaires

Hébergement Web