Classe datetime avec traduction


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 / Exemple :


<?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;
	}
	
}
?>

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.