Convertisseur chiffres arabes chiffres romains et date romaine

Soyez le premier à donner votre avis sur cette source.

Vue 57 409 fois - Téléchargée 597 fois

Description

Ce code est une fonction qui permet de convertir les chiffres arabes en chiffres romains... si ca peut être utile pour vos pages Web... J'ai ajouté une fonction pour la date du jour en romain.

Source / Exemple :


<?php
function arab2rom($nombre_arab)
{
	$nb_b10=array('I','X','C','M');
	$nb_b5=array('V','L','D');
	$nbrom='';
	$nombre=$nombre_arab;
	if($nombre>=0 && $nombre<4000)  // on peut convertir
		{
		for($i=3; $i>=0 ; $i--) 
		{	
			$chiffre=floor($nombre/pow(10,$i));
			if($chiffre>=1)
				{
					$nombre=$nombre-$chiffre*pow(10,$i);
					if($chiffre<=3)
					{
						for($j=$chiffre; $j>=1; $j--)
							{ 
								$nbrom=$nbrom.$nb_b10[$i]; 
							}
					}elseif($chiffre==9){
						
						 $nbrom=$nbrom.$nb_b10[$i].$nb_b10[$i+1];
						
					}elseif($chiffre==4){
						
						 $nbrom=$nbrom.$nb_b10[$i].$nb_b5[$i];
					}else{
						$nbrom=$nbrom.$nb_b5[$i];
						
						for($j=$chiffre-5; $j>=1; $j--)
							{ 
								$nbrom=$nbrom.$nb_b10[$i]; 
							}	
					}
			
				}			
		}
	       	}
	else
		{
			echo 'Valeur Hors Limite';		
		}		
  	return $nbrom;
}

function daterom()
{
$mois_rom = array('DEC', 'JAN', 'FEB', 'MAR', 'APR', 'MAI', 'IVN', 'IVL', 'AVG', 'SEP', 'OCT', 'NOV', 'DEC'); // on fait correspondre les indices aux mois on repete decembre a cause du modulo pour que (11+1)%12=0 ca donne decembre et non rien lol
// de plus on a ainsi JAN=1, FEB=2, plus simple non?
$j = date("d");
$mois = round(date("m")); // on arrondi pour pouvoir indexer(sinon au lieu de 3 on a 03 et ca bug!)
$annee = date("Y"); // Pour savoir si l'annee sera bissextile ou non
$date_romaine='';
$taille_mois=31;
$ad=0;
switch($mois){  //c etait ca ou encore faire deux array...
	case 3:case 5:case 7: case 10:
	$ides_mois=15;
	break;
	case 1:case 8:case 12:
	$ides_mois=13;
	break;
	case 4:case 6:case 9: case 11:
	$taille_mois=30;
	$ides_mois=13;
	break;
	default:	
	if($annee%4==0 || $annee%400==0){
		$taille_mois=29;}
	else{$taille_mois=28;}
	$ides_mois=13;
	break;
}

// Bon la il faut s y connaitre en calendrier romain :) on decompte les jours avant (a.d.) une certaine date du mois : les calandes (Kalendas) les nones et les ides(13 ou 15 e jour)
// Ensuite, on decompte les jours par rapport au mois suivant  (prochaine calende)

if($j==1){
	$date_romaine='KAL. '.$mois_rom[$mois].'.';}	// les calendes (premier jour du mois)
elseif($j<=$ides_mois-8){
	$ad=$ides_mois-8-$j;
	$date_romaine='NON. '.$mois_rom[$mois].'.';}   // les nones, 5 ou 7 eme jour (8 jours avant les ides)
elseif($j<=$ides_mois){
	$ad=$ides_mois-$j;
	$date_romaine='ID. '.$mois_rom[$mois].'.';}
else{							// avant les calendes du prochain mois
	$date_romaine='KAL. '.$mois_rom[($mois+1)%12].'.';
	$ad=$taille_mois-$j+1;
}
	if($ad==1){	
		$date_romaine='PRE '.$date_romaine; // "a.d. II" n existe pas, on dit PRIDIE (la veille)	
	}elseif($mois==2 && $ad+1>=6 && ($annee%4==0 || $annee%400==0)){ /* he oui le mois de fevrier (FEB) pose toujours des problemes ;)*/
		if($ad+1==6){		
		       	$date_romaine='a.d. BIS '.arab2rom($ad+1).' '.$date_romaine;}  // on utilise ma fonction lol la l année est bissextile
		else{
			$date_romaine='a.d. '.arab2rom($ad).' '.$date_romaine; //
			}
	}elseif($ad!=0){
		$date_romaine='a.d. '.arab2rom($ad+1).' '.$date_romaine;   // pour les autres mois
		}
	// calcul de la date
$date_romaine=$date_romaine.' '.arab2rom($annee+753).' A.U.C.';	
return $date_romaine;
}
?>

Conclusion :


je pense qu il n y pas de bug j ai fait quelques tests.. dites moi si on peu encore optimiser j ai essayé au maximum. :)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
dimanche 25 mars 2007
Statut
Membre
Dernière intervention
25 mars 2007

SALUT A VOUS
JE NE SAIS PAS COMMENT CA MARCHE ALOR JE VOUS DEMANDE SI VOUS POUVEZ ME DIRE LA TRADUCTION DE CETTE DATE EN DATE ROMAINE ? 25 MARS 1985.
Merci
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
21
T'es une réincarnation de romain ou quoi...? ;-) Les dates maintenant...!
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
21
Mieux vaut les deux de toutes façons...
Il marche bien ton code. Je passe sur les petites inexactitudes de programmation parce qu'il n'y a rien de grave.
C'est pas mal :-)
Messages postés
1
Date d'inscription
jeudi 7 octobre 2004
Statut
Membre
Dernière intervention
8 mars 2006

Merci, mais c'est bizarre que la coloration devienne rouge pour tout le code. je vais poster un ZIP c est plus exploitable.
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
21
Hello,

j'ai pas encore testé, mais déjà, je voulais dire que je trouve le thème rigolo et original :-) Et comme en plus, côté code, y a pire...très bien :-) Mais je testerai avant de noter, néanmoins.

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.