Calcul du numéro de la semaine

Soyez le premier à donner votre avis sur cette source.

Snippet vu 29 890 fois - Téléchargée 30 fois

Contenu du snippet

Voilà un petit code qui permet de calculer le numéro de la semaine pour une date donnée.

Source / Exemple :


<html><head>
<script langage="JavaScript"> 
document.writeln(new Date() + " --> " + getWeek ( new Date() ));
document.writeln("<BR>");
document.writeln("01/01/2005 --> " + getWeek ( new Date(2005, 0, 1) )) ;
document.writeln("<BR>");
document.writeln("01/01/2004 --> " + getWeek ( new Date(2004, 0, 1) )) ;
document.writeln("<BR>");
document.writeln("31/12/2004 --> " + getWeek ( new Date(2004, 11, 31) )) ;
document.writeln("<BR>");
document.writeln("01/01/2007 --> " + getWeek ( new Date(2007, 0, 1) )) ;
document.writeln("<BR>");
document.writeln("08/01/2007 --> " + getWeek ( new Date(2007, 0, 8) )) ;
document.writeln("<BR>");
document.writeln("10/01/2005 --> " + getWeek ( new Date(2005, 0, 10) )) ;
document.writeln("<BR>");
document.writeln("29/12/2003 --> " + getWeek ( new Date(2003, 11, 29) )) ;

function getWeek ( tDate ) {
  var res = '' ;

  //de l'année courante
  var janv1 = new Date ( tDate.getYear(), 0, 1 ) ;  //1 janvier
  var dec31 = new Date ( tDate.getYear(), 11, 31 ) ;  //31 decembre
  var janv1Num = janv1.getDay() == 0 ? 7 : janv1.getDay() ; //numero du 1 janvier
  var premSem = 7 - janv1Num > 2 ? true : false ;  //si la première semaine compte ou pas
  var premLundi = 9 - janv1Num ; //date du premier lundi suivant le 1 janvier
  //nb jour separant la date du 1 janvier
  var nbJour = parseInt((tDate - janv1) / (60 * 60 * 24 * 1000) + 1, 10) ;
  //nb jour dans l'annee
  var nbJourTot = parseInt((dec31 - janv1) / (60 * 60 * 24 * 1000) + 1, 10) ;
  //nombre de semaines dans l'annee
  var nbSem ;
  if (janv1Num == 4 || (janv1Num == 3 && nbJourTot == 366)) { nbSem = 53 ; }
  else { nbSem = 52 ; }

  //de l'année précédente
  var janv1Prev = new Date ( tDate.getYear()-1, 0, 1 ) ;  //1 janvier
  var dec31Prev = new Date ( tDate.getYear()-1, 11, 31 ) ;  //31 decembre
  var janv1NumPrev = janv1Prev.getDay() == 0 ? 7 : janv1Prev.getDay() ;  //numero du 1 janvier
  //nb jour dans l'annee
  var nbJourTotPrev = parseInt((dec31Prev - janv1Prev) / (60 * 60 * 24 * 1000) + 1, 10) ;
  //nombre de semaines dans l'annee
  var nbSemPrev ;
  if (janv1NumPrev == 4 || (janv1NumPrev == 3 && nbJourTotPrev == 366)) { nbSemPrev = 53 ; }
  else { nbSemPrev = 52 ; }

  //calcul de la semaine
  var nbSemCompl = parseInt((nbJour - premLundi) / 7 , 10) ;

  var week = premSem + nbSemCompl + 1 ;

  if (nbJour < premLundi) {
    if (premSem) {
      res = '01/' + tDate.getYear() ;
    }
    else {
      res = nbSemPrev + '/' + (tDate.getYear()-1) ;
    }
  }
  else {
    if ((week > 52) && (week > nbSem)) {
      res = '01/' + (tDate.getYear()+1) ;
    }
    else {
      var tmp = '0' + week ;
      res = tmp.substring(tmp.length-2, tmp.length) + '/' + tDate.getYear() ;
    }
  }

  return (res) ;
}

</script> 
</head></html>

Conclusion :


S'il y a des bugs n'hesitez pas

A voir également

Ajouter un commentaire

Commentaires

jfmaze
Messages postés
13
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
16 juin 2006
-
ou bien en asp et javascript
<script language="Javascript">
var numsemaine = <%=DatePart("ww", Date())%>
</script>
avec
<%= DatePart(periode,date[,DoW[,WoY]]) %>

Periode peut prendre les valeurs :


yyyy : année
q : trimestre
m : mois
y : jour de l'année
d : jour
w : jour de la semaine
ww : semaine
h : heure
n : minute
s : seconde

DoW est un entier précisant le premier jour de la semaine à prendre en compte
(1:Dimanche à 7:Samedi)

WoY est un entier spécifiant la première semaine de l'année.
1 : la semaine incluant le 1er janvier (defaut)
2 : la semaine comportant au moins quatre jours dans la nouvelle année
3 : la première semaine complète de la nouvelle année.
cs_yacineo
Messages postés
7
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
7 mars 2006
-
es que c possible de modifier ton script afin de donner en entrer le mois et l année en sortie il m affiche les numéro des 4 semaine de ce mois et la date de chaque jours
par exmple
janvier 2005
semaine 1:
lundi 31
maridi 01
mercredi 02
...
semaine 1:
lundi 07
..
cs_jerms
Messages postés
115
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
3 janvier 2016
-
sans doute, laisse moi le temps d'y reflechir
lecochien
Messages postés
3
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
29 mars 2006
-
Merci pour ce script fort utile. Par contre il ne marchera pas sous firefox car il faut remplacer les getYear par des getFullYear. Ceci n'a aucune incidence pour les autres navigateurs.
@+
cs_gagou9
Messages postés
128
Date d'inscription
vendredi 19 septembre 2003
Statut
Membre
Dernière intervention
20 novembre 2007
-
salut!

je suis sous firefox, donc j'ai remplacé les getyear par getfullyear, et en 2006 ça marchait tres bien, nous voila en 2007, et ça fonctionne plus du tout !!

dommage!

Ciao! et merci !

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.