Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONVERTISSEUR CHIFFRES ARABES CHIFFRES ROMAINS ET DATE ROMAINE


Information sur la source

Catégorie :Maths & Algorithmes Classé sous : romain, chiffres, arabes, convertir, date Niveau : Débutant Date de création : 07/03/2006 Date de mise à jour : 08/03/2006 21:51:09 Vu / téléchargé: 23 884 / 182

Note :
6 / 10 - par 3 personnes
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

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

  • <?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;
  • }
  • ?>
<?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. :)
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

08 mars 2006 16:01:49 :
Chose promise chose due! Voici la date du calendrier romain qui respecte les années bissextiles en plus!
08 mars 2006 16:06:50 :
petits problemes de coloration ;-)
08 mars 2006 16:36:41 :
Ajout du ZIP qui fonctionne car sur mon site
08 mars 2006 21:51:09 :
Bug corrigé sur les premier du mois, ajout de la date AUC : ab urbe condita, depuis la fondation de Rome

Commentaires et avis

signaler à un administrateur
Commentaire de malalam le 08/03/2006 08:11:08 administrateur CS

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.

signaler à un administrateur
Commentaire de juju1er le 08/03/2006 16:27:23

Merci, mais c'est bizarre que la coloration devienne rouge pour tout le code. je vais poster un ZIP c est plus exploitable.

signaler à un administrateur
Commentaire de malalam le 08/03/2006 16:32:21 administrateur CS

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 :-)

signaler à un administrateur
Commentaire de malalam le 09/03/2006 09:50:32 administrateur CS

T'es une réincarnation de romain ou quoi...? ;-) Les dates maintenant...!

signaler à un administrateur
Commentaire de mike313 le 25/03/2007 01:39:39

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

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

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 convertir date française en timestamp [ par dreaman ] Bjour,j ai une date&nbsp;avec ce format "17/01/2005&nbsp; 16:33:14" et je voudrai la transformer en timestamp. Please, c'est un petit probleme mais il convertir une date dd/mm/aaaa en aaaa-mm-dd [ par aquewel ] mon probleme est dans le titreje trouve rien rien ne marche si vous pouviez m'aider a trouver le chemin ca serait cool !!!! merci convertir une date... [ par astyax ] Salut à tous,voilà, j'aimerai savoir comment réussir à convertir une date qui apparait comme ça:Wed, 10 Nov 2004 13:05:41 +0100en une date comme ça :1 Convertir TimeStamp en date dans un tableau excel [ par dreaman ] Convertir TimeStamp en date dans un tableau excel basic Convertir une date [ par RM50Man ] Comment fait on pour convertir une date que je sors de ma base de donn&#233;e,au format francais par exemple.J aimerais convertir cette date au format convertir date 10/12/2005 10:12:50 en timestamp [ par mictif ] Bonjour, j'aimerai convertir une date sous la forme : '10/12/2005 10:12:50' en timestamp pour mysql mais je n'y arive pas... si quelqu'un peut m'aider Afficher la date "Hejir" (kestion pr les dév arabes kom moi :-) ) [ par Leila83 ] Mes cordiales salutations à ts les dév de phpcs.com et en particuliers aux admins du site ;) Sur certains sites arabes, il existe la date ke tt le mo Convertir une date en français [ par malaysia ] Bonsoir,J'ai pass&#233; l'apr&#232;s-midi sur un truc tout b&#234;te je suppose mais que je n'arrive pas &#224; r&#233;soudre. Je r&#233;cup&#232;re u Convertir une date [ par kangoo75 ] Bonjour, Je suis ultra d&#233;butant en PHP, et j'aimerais savoir la fonction pour transformer une date par exemple : 25-12-2005 en lundi 25 d&#233;ce


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 1,139 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.