begin process at 2012 02 05 22:52:09
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date/Heure

 > SCRIPT POUR CONVERTIR UNE DATE GREGORIENNE EN DATE ISO 8601 (N° DE SEMAINE)

SCRIPT POUR CONVERTIR UNE DATE GREGORIENNE EN DATE ISO 8601 (N° DE SEMAINE)


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Date/Heure Classé sous :convertir, date, grégorienne Niveau :Débutant Date de création :15/06/2005 Date de mise à jour :15/06/2005 16:57:33 Vu :19 263

Auteur : FREESLY

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

 Description

Ce petit Script sert a trouver la date en format ISO 8601, c'est a dire Le numéro de semaine, le numero du jour de la semaine (du lundi au dimanche) et l'année (et oui car la premiere semaine d'une année peut commencer l'année d'avant comme la derniere semaine peut se terminer l'année d'aprés)
Bref j'ai récuperé l'Algo d'un certain 'Rick McCarty' (rendons a césar...) mais j'ai rectifier une chose ou deux mineures qui fesaient bugger mon script. Je le met donc en ligne car j'en avais besoin pour une appli et j'ai galéré comme un âne pour trouver l'algo.
Donc si cela peut servir à quelqu'un...

Source

  • <cfscript>
  • //-------------------------------------------------------------------------------------------------------------->
  • //------- Algorithme pour Convertir une Date Gregorienne en Date de semaine ISO 8601 ----------------------->
  • //-------------------------------------------------------------------------------------------------------------->
  • //-- 1. Convert input to Y M D
  • Y = Annee; //(full specification; input 98 = year 0098)
  • M = Mois; //(1 through 12)
  • D = Jour; //(1 through 31)
  • //-- 2. Find if Y is LeapYear IsLeapYear(année)
  • if(IsLeapYear(Y))
  • {
  • LeapYear = true;
  • }
  • else
  • {
  • LeapYear = false;
  • }
  • //-- 3. Find if Y-1 is LeapYear
  • if(IsLeapYear(Y-1))
  • {
  • LeapYear_1 = true;
  • }
  • else
  • {
  • LeapYear_1 = false;
  • }
  • //-- 4. Find the DayOfYearNumber for Y M D
  • Mnth = ArrayNew(1);
  • Mnth[1] = 0;
  • Mnth[2] = 31;
  • Mnth[3] = 59;
  • Mnth[4] = 90;
  • Mnth[5] = 120;
  • Mnth[6] = 151;
  • Mnth[7] = 181;
  • Mnth[8] = 212;
  • Mnth[9] = 243;
  • Mnth[10] = 273;
  • Mnth[11] = 304;
  • Mnth[12] = 334;
  • DayOfYearNumber = D + Mnth[M];
  • if (LeapYear EQ true AND M GT 2)
  • {
  • DayOfYearNumber = DayOfYearNumber + 1;
  • }
  • //-- 5. Find the Jan1Weekday for Y (Monday=1, Sunday=7)
  • YY = ( Y - 1 ) MOD 100;
  • C = ( Y - 1 ) - YY;
  • G = YY + YY / 4;
  • Jan1Weekday = 1 + ((((( C / 100 ) MOD 4 ) * 5 ) + G ) MOD 7 );
  • //-- 6. Find the Weekday for Y M D
  • H = DayOfYearNumber + (Jan1Weekday - 1);
  • Weekday = 1 + (( H - 1 ) MOD 7 );
  • //-- 7. Find if Y M D falls in YearNumber Y-1, WeekNumber 52 or 53
  • if ( DayOfYearNumber LE ( 8 - Fix(Jan1Weekday) ) AND Jan1Weekday GE 5 )
  • {
  • YearNumber = Y - 1;
  • if (Fix(Jan1Weekday) EQ 5 OR (Fix(Jan1Weekday) EQ 6 AND LeapYear_1 EQ true))
  • {
  • WeekNumber = 53;
  • }
  • else
  • {
  • WeekNumber = 52;
  • }
  • }
  • else
  • {
  • YearNumber = Y;
  • }
  • //-- 8. Find if Y M D falls in YearNumber Y+1, WeekNumber 1
  • if (YearNumber EQ Y)
  • {
  • if ( LeapYear EQ true )
  • {
  • I = 366;
  • }
  • else
  • {
  • I = 365;
  • }
  • if ( (I - DayOfYearNumber) LT (4 - Weekday) )
  • {
  • YearNumber = Y + 1;
  • WeekNumber = 1;
  • }
  • }
  • //-- 9. Find if Y M D falls in YearNumber Y, WeekNumber 1 through 53
  • if (YearNumber EQ Y)
  • {
  • J = DayOfYearNumber + (7 - Weekday) + (Jan1Weekday -1);
  • WeekNumber = J / 7;
  • if (Jan1Weekday GT 4)
  • {
  • WeekNumber = WeekNumber - 1;
  • }
  • }
  • Weekday = Fix(Weekday);
  • </cfscript>
<cfscript>
//-------------------------------------------------------------------------------------------------------------->
//-------   Algorithme pour Convertir une Date Gregorienne en Date de semaine ISO 8601   ----------------------->
//-------------------------------------------------------------------------------------------------------------->
	
	//-- 1. Convert input to Y M D
	 Y = Annee;     //(full specification; input 98 = year 0098)
	 M = Mois;      //(1 through 12)
	 D = Jour;      //(1 through 31)
	
	//-- 2. Find if Y is LeapYear IsLeapYear(année)
	
	
	if(IsLeapYear(Y))
	{
	   LeapYear = true;
	}
	else
	{
	   LeapYear = false;
	}
	
	//-- 3. Find if Y-1 is LeapYear
	
	
	if(IsLeapYear(Y-1))
	{
	   LeapYear_1 = true;
	}
	else
	{
	   LeapYear_1 = false;
	}
	
	//-- 4. Find the DayOfYearNumber for Y M D
	
	Mnth = ArrayNew(1);
	Mnth[1] = 0;           
	Mnth[2] = 31;         
	Mnth[3] = 59;         
	Mnth[4] = 90;
	Mnth[5] = 120;
	Mnth[6] = 151;
	Mnth[7] = 181;
	Mnth[8] = 212;
	Mnth[9] = 243;
	Mnth[10] = 273;
	Mnth[11] = 304;
	Mnth[12] = 334;
	
	DayOfYearNumber = D + Mnth[M];
	
	if (LeapYear EQ true AND M GT 2)
	{
	   DayOfYearNumber = DayOfYearNumber + 1;
	}
		 
	//-- 5. Find the Jan1Weekday for Y (Monday=1, Sunday=7)
	
	YY = ( Y - 1 ) MOD 100;
	C = ( Y - 1 ) - YY;
	G = YY + YY / 4;
	Jan1Weekday = 1 + ((((( C / 100 ) MOD 4 ) * 5 ) + G ) MOD 7 );

	//-- 6. Find the Weekday for Y M D
	
	H = DayOfYearNumber + (Jan1Weekday - 1);
	
	Weekday = 1 + (( H - 1 ) MOD 7 );
	
	//-- 7. Find if Y M D falls in YearNumber Y-1, WeekNumber 52 or 53
	
	if ( DayOfYearNumber LE ( 8 - Fix(Jan1Weekday) ) AND Jan1Weekday GE 5 )
	  {
		 YearNumber = Y - 1;
		 if (Fix(Jan1Weekday) EQ 5 OR (Fix(Jan1Weekday) EQ 6 AND LeapYear_1 EQ true))
		 {
			   WeekNumber = 53;
		 }
		 else 
		 {
			   WeekNumber = 52;
		 }
	  }
	  else 
	  {
		 YearNumber = Y;
	  }
		 
	//-- 8. Find if Y M D falls in YearNumber Y+1, WeekNumber 1
	
	if (YearNumber EQ Y)
	{
		if ( LeapYear EQ true )
		{ 
			I = 366;
		}
		else
		{
			I = 365;
		}
		if ( (I - DayOfYearNumber) LT (4 - Weekday) )
		{
			YearNumber = Y + 1;
			WeekNumber = 1;
		}
	}
	
	//-- 9. Find if Y M D falls in YearNumber Y, WeekNumber 1 through 53
	
	if (YearNumber EQ Y)
	{
		 J = DayOfYearNumber + (7 - Weekday) + (Jan1Weekday -1);
		 WeekNumber = J / 7;
		 if (Jan1Weekday GT 4)
		 {
			WeekNumber = WeekNumber - 1;
		 }
	}
	
	Weekday = Fix(Weekday);
	
</cfscript>

 Conclusion

Pas de bugs connus ;)


 Historique

15 juin 2005 16:57:34 :
rajout de "n° de semaine" dans le titre pour une meilleur recherche sur le net...

 Sources de la même categorie

CALCUL DES JOURS FÉRIÉS (FRANCE) par bastoun
Source avec Zip CALENDRIER par Dreus
Source avec Zip TRAVAILLER EN JOURS OUVRABLES par Roberto
RESPECTER LA MISE EN FORME DANS UN CHAMPS DE TYPE TEXTAREA par Skyride
TEMPS D'ÉXÉCUTION D'UNE PAGE par Kdo

 Sources en rapport avec celle ci

RÉSOLUTION DE VOS PROBLÈMES D'ACCENTS ET CARACTÈRES SPÉCIAUX par ABL-Online
Source avec Zip TRAVAILLER EN JOURS OUVRABLES par Roberto

Commentaires et avis

Commentaire de jojo1231123 le 06/02/2006 21:16:18

ca va

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

convertir une date [ par melany ] Bonjour,J'aimerais savoir comment convertir une date de 08-Aug-02 à 08-08-02 ?Existe-il une fonction ou dois-je faire des tests sur la date (ex : si A PB de Date sous access97 [ par helpme ] Bonjour,J'ai cree un petit prog sous access 97 et sous windows 2000. Dans ce prog il y a une table ou il y a un champs date et une valeur par défaut D format de date ... [ par beckham0187 ] Mon format de date vb est "dd/mm/yy", pour lire et ecrire dans la base ,pas de probleme...ecriture: 01/01/02 --&gt; 12420 (exemple de format interne)l Calcul d'un age a partir d'un champ date [ par jfg ] Bonjour,je voudrais pouvoir calculer un age à partir d'un champ date. Par exemple un champ contenant "10/07/78" me retournerait dans ma page "24". Format date [ par jfg ] Bonjour,&lt;cfcontent type="text/html; charset=iso-8859-1"&gt;&lt;cfset oldlocale = SetLocale ("French (Standard)")&gt;&lt;cfset "form.editnaissance" Somme de date [ par jfg ] Bonjour,que dois je faire pour pouvoir additionner des dates venant de ma base de donnée (datetime) ? savoir la date de modif d'une base de données [ par math85 ] est il possible de trouver le derniere date de modif d'une base access sous coldfusion?mercim@th85 Problème de date [ par smathios ] Bonjour, j'ai écrit le code suivant : &lt;cfset d1 = #LSDateFormat(Now(), "dd/mm/yyyy")#&gt;&lt;cfset d2 = #LSDateFormat(DateAdd("d",21,d1), "dd/mm/yy Fichier (datelastaccessed) [ par uchrony ] Bonjour à tous,je voudrais savoir si quelqu'un sait me dire comment je peux accèder à la propriété "date du dernier accès" d'un fichier au travers d'u Insertion de date dans BD Access [ par miketrix ] Salut,Je cherche la syntaxe exacte pour insérer une date dans une Base de données à partir d'un simple formulaire ( champ input text contenant la date


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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 : 2,168 sec (3)

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