begin process at 2010 03 17 01:03:54
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date & Heure

 > CALCUL DU NUMÉRO DE LA SEMAINE

CALCUL DU NUMÉRO DE LA SEMAINE


 Information sur la source

Note :
Aucune note
Catégorie :Date & Heure Classé sous :numéro, semaine, calcul, week Niveau :Initié Date de création :10/08/2005 Vu :20 617

Auteur : jerms

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

 Description

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

Source

  • <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>
<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


 Sources du même auteur

Source avec Zip ALBUM PHOTOS EN JAVASCRIPT
SUPPRIMER LA FRAME DE PUB ET LES POPUPS CHEZ IFRANCE
HORLOGE DÉCADÉCIMALE
Source avec une capture UNE DEMI-HORLOGE À AIGUILLES ENTIÈREMENT PARAMETRABLE
TRI DYNAMIQUE DE TABLEAU

 Sources de la même categorie

Source avec Zip CHRONOMÈTRE AMÉLIORÉ par Kolosta
Source avec Zip SLEEP() SANS BOUCLE D'ATTENTE CONSOMMATRICE par Phildepantin
Source avec Zip AFFICHAGE DE L'HEURE ET DU FUSEAU HORAIRE (TIMEZONE) SUR LA ... par navylav2
Source avec Zip Source avec une capture HORLOGE TRIPLE AFFICHAGE AU FORMAT AM/PM/24H/DST par sofiane1234
Source avec Zip Source avec une capture HORLOGE NUMÉRIQUE EN JAVASCRIPT, COMPATIBLE IE ET FF par bad_dark_spirit

 Sources en rapport avec celle ci

Source avec Zip UNE CALCULATRICE par lgh
NUMERO DE LA SEMAINE par Dri
Source avec Zip Source avec une capture TABLEUR TYPE EXCEL par WhiteDwarf
CALCULATEUR. par lamillor
Source avec Zip Source avec une capture CALENDRIER PAR MOIS/ANNÉE AVEC AFFICHAGE DES NUMÉROS DE SEMA... par Marmotte86

Commentaires et avis

Commentaire de jfmaze le 11/08/2005 10:33:17

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.

Commentaire de yacineo le 07/03/2006 13:40:31

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
..

Commentaire de jerms le 08/03/2006 18:48:08

sans doute, laisse moi le temps d'y reflechir

Commentaire de lecochien le 29/03/2006 09:50:27

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.
@+

Commentaire de gagou9 le 27/01/2007 15:01:32

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 !

Commentaire de gagou9 le 27/01/2007 15:16:26

oups, désolé, l'erreur vient de moi !!
ça marche tres bien.... !!

merce encore!!

ciao!

Commentaire de StanTheFlasher le 29/01/2007 12:41:29

Bonjour,

Etant un vraie buse en javascript (comme en informatique d'ailleurs), pourriez-vous m'indiquer un exemple d'application de cette fonction trés intéressante de calcul du numéro de semaine? en fait je ne sais pas comment appeler cette fonction pour par exemple afficher ("nous sommes la +(numéro de semaine)+" ème semaine").

Merci.

Commentaire de gagou9 le 29/01/2007 15:49:00

yop!
c'est pas spécialement compliqué, puisqu'il suffit de faire :

<script language="javascript">
dt = new Date();
we = getWeek(dt);
alert("Nous sommes la " + we + "eme semaine !");
</script>

voila voila !

ciao!
Gagou

Commentaire de StanTheFlasher le 29/01/2007 19:13:17

Merci beaucoup!
En fait j'ai pu intégrer ce super code dans mes pages d'emploi du temps et cela va me permettre d'afficher l'emploi du temps de la semaine en cours sans avoir à modifier chaque lundi le lien vers la semaine en cours.

Je cherchais cette solution depuis des années (je suis un boulet et je n'ai pas le droit d'utiliser php dans ma boîte) et grâce à vous, j'ai enfin trouvé la solution.

Vraiment mille mercis!

Commentaire de jerms le 29/01/2007 19:32:45

mais de rien. et surtout merci à Gagou9 d'avoir répondu si vite ;)

Commentaire de PCPT le 02/07/2007 21:53:14 administrateur CS

salut,
ton code n'est pas compatible avec FireFox2 apparemment

js n'est pas mon fort, aurais-tu une piste de recherche stp?
merci

Commentaire de Wildok le 19/11/2008 15:40:48

Je crois qu'il y a un Bug pour 1 Lundi du mois de Mars qui fait partie de la semaine précédente ... et aprés tous les lundi font partie de la semaine précédente :

Exemple :
dimanche 25-03-2029 <-> 12/2029

lundi    26-03-2029 <-> 12/2029 au lieu de 13
mardi    27-03-2029 <-> 13/2029
mercredi 28-03-2029 <-> 13/2029
jeudi    29-03-2029 <-> 13/2029
vendredi 30-03-2029 <-> 13/2029
samedi   31-03-2029 <-> 13/2029
dimanche 01-04-2029 <-> 13/2029

lundi    02-04-2029 <-> 13/2029 au lieu de 14

J'espère me tromper qq part ... peux tu vérifier ?

Commentaire de Wildok le 19/11/2008 16:28:35

Cela semblerais qu'a partir d'une certaine date (en Mars), le calcul du nbJour donne du XX.9583333 ..... et l'arondi doit se faire au supérieur et pas l'inférieur :

Remplacer :
var nbJour = parseInt( (tDate - janv1) / (60 * 60 * 24 * 1000) + 1, 10) ;
Par :
var nbJour = Math.ceil( ( (tDate - janv1) / 86400000) + 1);

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

trouver une date à partir du numéro de semaine [ par khmerpower ] je cherche à faire un script où à partir du numéro de semaine je peux sortir la date de début de semaine et la date de fin de semaine.Je sais que c'es un script dans une page html pour un calcul simple avec saisie de l'utilisateur [ par lemasque49 ] si quelqu'un peut me dire comment faire un javascript qui me permet d'avoir cinq fenêtre dans lesquelles j'aurais 4 variables et un résultat et dans l Comment faire ce script ? A l'AIDE [ par lemasque49 ] J'ai fait une page sur laquelle j'ai des champs de saisies et des calculs intermédiaires pour afficher un résultat (calcul simple)Je voudrais y introd CodeS-SourceS de la semaine [ par MaitreJack ] Je souhaite transmettre une demande de correctionà Nix, le Webmestre de CodeS-SourceS.Bonjour,Le CodeS-SourceS de la semaine que je reçois contientdes Moteur de calcul sur un formulaire [ par twentyseven ] Bonjour,Je souhaite effectuer des claculs (+, *, % ...) sur des formulaires représentant des devis, factures...Le nombre de calculs étant important, j validité d'un numéro siren [ par bob2bob ] Slt.Je cherche à contrôler la validité d'un numéro siren dans un formulaire. J'ai trouvé ce script (ci-dessous), mais il semble rejetter TOUS les numé Comment adapter la photo du mois en photo de la semaine [ par arnaud d ] Hello,Tout d'adord merci pour tout ... !!!P'tite question :J'ai mis en place le script permettant d'avoir une photo différente chaque mois, ici :http: calcul champs texte [ par alahyaneali ] BonjourJ'ai des champs texte dont les nom sont;txtQte1,txtQte2,txtQte3,txtQte4...txtQteX;pareil pourtxtPrix1,txtPrix2,txtPrix3,txtPrix4...txtPrixX;je calcul de prix dans un formulaire multiple !! [ par pumbaa ] &nbsp;Bonjour a tous &nbsp; <P c Recharger une page automatiquement en prenant en compte le paramètres modifiés! [ par lambrosx ] Bonjour &#224; tous, je d&#233;bute totallement en JAVASCRIPT. Je fais un petit bout de programme en HTML et PHP, il permet de lister des palettes en


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,139 sec (4)

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