begin process at 2012 05 27 22:13:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date / Heure

 > CLASSE DATETIME AVEC TRADUCTION

CLASSE DATETIME AVEC TRADUCTION


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Date / Heure Classé sous :date, format, langue, fr Niveau :Débutant Date de création :21/02/2010 Date de mise à jour :21/02/2010 09:17:07 Vu / téléchargé :3 139 / 137

Auteur : 1030

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Début de class DateTime avec prise en charge multi-langue.

Pour le moment seul la fonction de formatage à été implenté.

Fonctionne sous php 5.1 >

Source

  • <?php
  • class DateTime {
  • var $dtime;
  • var $lang;
  • public function __toString() {
  • $date = $this->format(constant("DATE_TIME_FORMAT"));
  • return $date;
  • }
  • public function __construct($time = NOW,$lang='fr')
  • {
  • $this->lang = $lang;
  • $this->dtime = $time;
  • include(dirname(__FILE__)."/lang/".$lang.".php");
  • }
  • public static function createFromFormat($format, $datetime,$lang='fr')
  • {
  • $j = 0;
  • $dtime["year"] = 0;
  • $dtime["month"] = 0;
  • $dtime["day"] = 0;
  • $dtime["hour"] = 0;
  • $dtime["minute"] = 0;
  • $dtime["second"] = 0;
  • for($i=0;$i<mb_strlen($format);$i++)
  • {
  • switch(mb_substr($format,$i,1))
  • {
  • case "Y":
  • $dtime["year"] = mb_substr($datetime, $j, 4);
  • $j = $j + 4;
  • break;
  • case "m":
  • $dtime["month"] = mb_substr($datetime, $j, 2);
  • $j = $j + 2;
  • break;
  • case "d":
  • $dtime["day"] = mb_substr($datetime, $j, 2);
  • $j = $j + 2;
  • break;
  • case "H":
  • $dtime["hour"] = mb_substr($datetime, $j, 2);
  • $j = $j + 2;
  • break;
  • case "i":
  • $dtime["minute"] = mb_substr($datetime, $j, 2);
  • $j = $j + 2;
  • break;
  • case "s":
  • $dtime["second"] = mb_substr($datetime, $j, 2);
  • $j = $j + 2;
  • break;
  • default:
  • $j++;
  • break;
  • }
  • }
  • $time = mktime ($dtime["hour"], $dtime["minute"], $dtime["second"], $dtime["month"], $dtime["day"], $dtime["year"]);
  • return new self($time);
  • }
  • //Reçois les paramêtre de formatage de la fonction date()
  • //Gère ceux devant être traduit, et retourne la date formater
  • public function format($format)
  • {
  • $date = "";
  • for($i=0;$i<mb_strlen($format);$i++)
  • {
  • switch(mb_substr($format,$i,1))
  • {
  • // jour de la semaine, 3 première lettre
  • case "D":
  • $var = date("N", $this->dtime);
  • $date .= mb_substr(constant("WEEK_$var"),0,3);
  • break;
  • //jour de la semaine
  • case "l":
  • $var = date("N", $this->dtime);
  • $date .= constant("WEEK_$var");
  • break;
  • //Suffixe ordinal d'un nombre pour le jour du mois, en anglais, sur deux lettres
  • case "S":
  • $var = date("S", $this->dtime);
  • $date .= constant("SUFFIXE_$var");
  • break;
  • //Nom du mois
  • case "F":
  • $var = date("n", $this->dtime);
  • $date .= constant("MONTH_$var");
  • break;
  • //Nom du mois, 3 première lettre
  • case "M":
  • $var = date("n", $this->dtime);
  • $date .= mb_substr(constant("MONTH_$var"),0,3);
  • break;
  • //Le prochain caratère va être ignoré
  • case "\\":
  • $i++;
  • $date .= mb_substr($format,$i,1);
  • break;
  • // Caratère ignoré, et remis dans la chaine
  • case ",":
  • $date .= mb_substr($format,$i,1);
  • break;
  • // Caratère ignoré, et remis dans la chaine
  • case ":":
  • $date .= mb_substr($format,$i,1);
  • break;
  • default:
  • $date .= date(mb_substr($format,$i,1), $this->dtime);
  • }
  • }
  • return $date;
  • }
  • }
  • ?>
<?php
class DateTime {
	
	var $dtime;
	var $lang;
	
	public function __toString() {
		$date = $this->format(constant("DATE_TIME_FORMAT"));
		return $date;
    }
	
	public function __construct($time = NOW,$lang='fr')
	{
		$this->lang = $lang;
		$this->dtime = $time;
		
		include(dirname(__FILE__)."/lang/".$lang.".php");
	}
	
	public static function createFromFormat($format, $datetime,$lang='fr')
	{
		$j = 0;
		$dtime["year"] = 0;
		$dtime["month"] = 0;
		$dtime["day"] = 0;
		$dtime["hour"] = 0;
		$dtime["minute"] = 0;
		$dtime["second"] = 0;
		
		for($i=0;$i<mb_strlen($format);$i++)
		{
			switch(mb_substr($format,$i,1))
			{
				case "Y":
					$dtime["year"] = mb_substr($datetime, $j, 4);
					$j = $j + 4;
				break;
				case "m":
					$dtime["month"] = mb_substr($datetime, $j, 2);
					$j = $j + 2;
				break;
				case "d":
					$dtime["day"] = mb_substr($datetime, $j, 2);
					$j = $j + 2;
				break;
				case "H":
					$dtime["hour"] = mb_substr($datetime, $j, 2);
					$j = $j + 2;
				break;
				case "i":
					$dtime["minute"] = mb_substr($datetime, $j, 2);
					$j = $j + 2;
				break;
				case "s":
					$dtime["second"] = mb_substr($datetime, $j, 2);
					$j = $j + 2;
				break;
				default:
					$j++;
				break;
			}
		}
		
		
		$time = mktime  ($dtime["hour"], $dtime["minute"], $dtime["second"], $dtime["month"], $dtime["day"], $dtime["year"]);
		
		return new self($time);
	}
	
	//Reçois les paramêtre de formatage de la fonction date()
	//Gère ceux devant être traduit, et retourne la date formater
	public function format($format)
	{
		$date =  "";

		for($i=0;$i<mb_strlen($format);$i++)
		{
			switch(mb_substr($format,$i,1))
			{
				// jour de la semaine, 3 première lettre
				case "D":
					$var = date("N", $this->dtime);
					$date .= mb_substr(constant("WEEK_$var"),0,3);
				break;
				//jour de la semaine
				case "l":
					$var = date("N", $this->dtime);
					$date .= constant("WEEK_$var");
				break;
				//Suffixe ordinal d'un nombre pour le jour du mois, en anglais, sur deux lettres
				case "S":
					$var = date("S", $this->dtime);
					$date .= constant("SUFFIXE_$var");
				break;
				//Nom du mois
				case "F":
					$var = date("n", $this->dtime);
					$date .= constant("MONTH_$var");
				break;
				//Nom du mois, 3 première lettre
				case "M":
					$var = date("n", $this->dtime);
					$date .= mb_substr(constant("MONTH_$var"),0,3);
				break;
				//Le prochain caratère va être ignoré
				case "\\":
					$i++;
					$date .= mb_substr($format,$i,1);
				break;
				// Caratère ignoré, et remis dans la chaine
				case ",":
					$date .= mb_substr($format,$i,1);
				break;
				// Caratère ignoré, et remis dans la chaine
				case ":":
					$date .= mb_substr($format,$i,1);
				break;
				default:
					$date .= date(mb_substr($format,$i,1), $this->dtime);

			}
		}

		return $date;
	}
	
}
?>


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

21 février 2010 09:17:07 :
correction d'une erreur ligne 113 mb_ en double

 Sources du même auteur

SAUVEGARDE D'UNE BASE DE DONNÉE, RESULTAT ENVOYER PAR EMAIL,...

 Sources de la même categorie

Source avec une capture AGENDA GRAPHIQUE SIMPLE (DÉBUTANT) À INTÉGRER par NicomakM
CALCUL DU NOMBRE DE JOURS CONTENUS DANS L'INTERSECTION DE DE... par curphey
CALENDRIER EN 70 LIGNES par tchconst
Source avec Zip CALENDRIER par gabay
CALENDRIER SIMPLE par manuche

 Sources en rapport avec celle ci

FORMATER DES MILLISECONDES AU FORMAT HH:MM:SS:MMM par lcef
Source avec Zip CLASS DE VALIDATIONS DE DATE, ENTIER, STRING,... par whiskycoke
VERIFIER LE FORMAT D'UNE DATE (DD-MM-YYYY) par yellowrun
Source avec Zip TRANSFORMER UNE DATE FORMAT ANGLOPHONE( AAAA-MM-JJ) EN FORMA... par italiasky
FONCTION DE VÉRIFICATION DE LA DATE ET DE L'HEURE par evay16

Commentaires et avis

Commentaire de Delphiprog le 21/02/2010 18:19:49 administrateur CS

Pourquoi vouloir réinventer l'eau chaude ?
http://fr.php.net/manual/fr/class.datetime.php

Commentaire de 1030 le 22/02/2010 06:00:39

Deux raison, le première la traduction dans d'autre langue qui n'est pas prise en charge par votre classe.

La deuxième, mon hébergeur utilise la version 5.1 de php, et cette class est uniquement implanté a partir de la version 5.3

Commentaire de Delphiprog le 22/02/2010 21:43:05 administrateur CS

NB : cette classe n'est pas de moi !
Mais, effectivement, ça fait au moins une bonne raison.

Commentaire de aKheNathOn le 08/03/2010 12:08:33 9/10

Merci de ta contribution 1030, ta classe est très utile.

Quelques améliorations / corrections :

- rajout du timezone peut être intéressant (comme ça on affiche l'heure locale)
- modifier le nom de ta classe ou bien prendre en charge les conflits de nommage avec les versions futures
- avoir une version de durée entre 2 dates (permettant d'avoir un truc du style : depuis 1 heure, depuis 5 minutes, depuis 5 jours)

Je pense la ré-utiliser dans certains de mes projets :)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

format de date et time en c+ [ par tertulia ] comment modifier le format de la date c'est dire remplacer les / par - et de l'heure càd remlacer : par - voilac pour pouvoir creer un fichier avec la Convertir une Date au format Timestamp [ par Touf ] Salut !J'ai un petit pb : j'accède à une Date stockée dans une bdd mysql sous la forme (timestamp) "YmdHis" : 20020608105031J'aimerais l'afficher sous Date us rhaaa! [ par phildarvador ] Salut à tous, J'ai une date dans une table mysql (au format date yyyy-mm-dd) et je ne trouve pas comment faire pour la transformer en dd-mm-yyyy (en f Comparaison de date [ par benett ] Bonjour à tous,Comment peut-on comparer 2 dates et extraire la différences en jours.Ces 2 dates sont encodées via un formulaire au format aaaa/aa/aa.C Visual basic pour application Prob Date userform [ par velo ] Lorque l'utilisateur de ma macro saisie une date en TextBox1 (Feuille Userform) 31/12/2002 ces données sont sous forme de texte Comment les converti changer la date...... [ par rich25200 ] bonjour,dans ma BDD j'insere la date avec la fonction NOW(), il m'insere la date avec ce format "2004-04-28 11:21:03"..je voudrais l'afficher dans une PHP et MySQL : format de date [ par vir76 ] Salut tout le monde,Voilà, dans MySQL, j'ai converti mon format DATE à l'aide de la fonction SELECT DATE_FORMAT(nom de mon champ, mon format)Le serveu PHP et MySQL : format de date [ par vir76 ] Bonjour,Je voudrais convertir le format de date de mySQL (aaaa-mm-jj) en format français (jj-mm-aa). J'ai essayé plusieurs fonctions présentes sur ce Problème d'affichage de date dans un Ajout [ par vir76 ] Bonjour,Dans ma base de données MySQL, j'ai un champ 'COMMANDE_DATE' avec pour format TIMESTAMP.Pour la visualisation, grâce à un SELECT DATE_FORMAT, Format de la date [ par john1983 ] Comment faire pour que la date soit 27-07 et non 2004-07-27 par exemple!Dans ma base de donné sur wanadoo, j'ai tout essayer et je n'y arrive pas!Merc


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales