1

j'ai besoin de coder un calendrier avec les numéros de semaine.
Certaines années ont 53 semaines, et les autres 52.

Empiriquement j'ai trouvé un rythme pour ces semaines: tous les 5,5 ans, cad on saute 5 ans, et puis on saute 4 ans, ce qui donne un rythme de 2 années de 53 semaines tous les 11 ans. On peut trouver des infos officielles sur ça?

j'ai trouvé les années à 53 semaines suivantes: 1970, 1976, 1981, 1987, 1992... ce qui doit donc continuer en 1998, 2003, 2009
c'est correct d'après vous?

2

En clair tu cherches un algo qui génère un calendrier perpétuel ?

On doit pouvoir trouver très facilement ça sur Internet. Je ne pense pas que ce soit des algorithmes obscurs et brevetés, vu qu'on trouve des calendriers perpétuels dans tous les appareils d'aujourd'hui (PDA, téléphones, montres, PC).
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

3

Attention aux années bissextiles sautées par le calendrier grégorien (1900, 2100, ...).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

4

Kevin > oui, je sais, une année est bissextile si elle est multiple de 4, sauf si elle est multiple de 100, mais quand même si elle est multiple de 400. Pas de souci, là. J'utilise des fonctions PHP genre localtime et mktime pour faire les conversions, au moins dans mon prototype privé.

Par contre, oui, je veux faire un calendrier style windows mobile ou téléphone, donc je dois me synchroniser sur les semaines de 7 jours, qui commencent au petit bonheur en fait tongue, et j'imagine bien qu'il y a pas de brevet sur le temps qui passe grin

v essayer de googler, j'espérais juste que qn pourrait me répondre si c'est un truc connu smile

edit: quelques idées ici, il calcule le nb de semaines de chaque mois http://www.javascriptfr.com/code.aspx?ID=32185
 function Sem(A,M,J)
 {
 date.setYear(A);
 date.setMonth(M);
 date.setDate(J);
 date2=new Date(A,0,1);
 x=1;
 //Cherche le premier Lundi de l'année
 do
 {
 date2.setDate(x);
 x++;
 }
 while(date2.getDay()!=1);
 temps=date.getTime()-date2.getTime()+24*60*60*1000;
 sem=temps/(1000*60*60*24*7);
 return Math.ceil(sem);
 } 


Apparemment la semaine 1 est celle qui contient le premier lundi de l'année, c'est plus simple, je vais tester.

Edit, oui, la semaine 1 est bien celle qui contient le premier lundi de l'année

5

squalyl > ça ne marchera pas, pourquoi tu essayes de trouver un rythme empirique ? (en vrai il y a bien une période mais a priori c'est 400 ans tongue)
Qu'est-ce que tu appelles une année avec 53 semaines, tu veux dire une année avec 53 lundis ? (ou avec 53 dimanches ? certains font commencer la semaine le dimanche ^^)

les infos officielles sont qu'une année normale fait 52 semaines et un jour, une année bissextile 52 semaines et deux jours.

Les règles pour trouver les années bissextiles (post-1581) sont : une année est bissextile si son numéro est un multiple de 4 *sauf* si c'est un multiple de 100 et pas de 400. Ainsi l'année 1600 était bissextile, 1700, 1800 et 1900 ne l'ont pas été, mais l'an 2000 oui.

edit : cross, les semaines de 7 jours ne commencent pas au petit bonheur trifus, tu avances exactement d'un jour par année simple et deux par année bissextile, il suffit de faire le calcul par rapport à une année dont tu connais le jour de départ...
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

6

nan, mais on a crossé: je vais d'abord voir si la semaine 1 de l'année est celle qui contient le premier lundi. C'est facile à vérifier avec mon pda ou mon tel!

edit: cette assertion a l'air de fonctionner sur toutes les années entre 1970 et 2010.

7

Regarde c'est simple : le premier janvier 2007 est un lundi. Tu peux partir de là.
Donc tu vas avoir 53 lundis en 2007 car le dernier jour sera aussi un lundi (le premier et le dernier jour sont le même dans le cas d'une année simple).
Le premier janvier 2008 sera un mardi, l'année est bissextile donc le dernier jour sera un mercredi.
Le premier janvier 2009 sera un jeudi.
En 2010 ce sera un vendredi.
En 2011 un samedi.
En 2012 un dimanche. 2012 sera bissextile donc elle se terminera un lundi, et donc il y aura de nouveau 53 lundis en 2012.
2013 commencera un mardi, etc.

ton année contient 53 lundis si et seulement si elle commence un lundi *ou* elle commence un dimanche et est bissextile happy

recross... tu veux dire qu'avant le premier lundi on est dans la semaine 0 ? mais ce que tu voulais savoir c'est s'il y a une semaine n° 53, non ?
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

8

heu, trouver une semaine 53 je peux le faire, si je connais la date du début de la semaine 1 suivante smile

mais ton idée est pratique aussi, j'aime bien smile ça fait une semaine pour trouver les années à 53 semaines smile

on va voir, merci en tout cas smile

9

ah non angry le premier lundi de 2004 est le 5 janvier, mais c'est déja la semaine 2 trifus je comprends pas!

10

C'est parce que les gens donnent 2 numéros à la même semaine si elle entame 2 années. sick
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

11

mais non, pas possible

en tout cas, je n'arrive pas à trouver un critère pour obtenir la date du premier jour de la semaine 1. pourtant, ça devrait être possible !

A moins que ça marche vraiment comme j'ai trouvé, un point de repère et une semaine de plus tous les 5 ou 6 ans.

12

j'ai trouvé

http://www.univ-lemans.fr/~hainry/articles/semaine.html
Si la première semaine de l’année est incomplète (c’est le cas six fois sur sept ; quand le premier janvier n’est pas un lundi), elle est numérotée 1 dès lors qu’elle a au moins quatre jours, 0 sinon.

J'y avais pensé, mais j'ai pas exploré plus loin cette voie. je teste.

13

ben l'algo est simple

suffit de savoir pour un jour précis dans le passé (par exemple 1/1/1900) tu compte le nombre de jour entre 1/1/1900 et le début de l'année que tu veux

tu fait nombre_de_jour%7 pour connaitre le n° du jour (0 lundi, 1 mardi etc..) et ensuite tu sais quel jour c'est suffit de calculer combien de jour il manque pour aller a "lundi" d'apres et tu as ta date...
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

14

Il y a un truc que j'ai pas dû comprendre, comment tu numérotes une semaine qui est à cheval sur deux ans ?
Là par exemple le 31 décembre sera un lundi, premier jour de la semaine n° 53 ; mais les six autres jours de la semaine seront en 2008.
Donc si tu veux juste regarder les semaines de l'année 2008, où places-tu ces six jours ? dans une semaine n° 0 ? ou est-ce que tu considères que comme la semaine a commencé en 2007 ils appartiennent en fait à l'année 2007 ? (cette dernière possibilité me semble étrange si tu veux le calendrier d'une année donnée...)

Si tu veux avoir tous les jours de l'année et que tu places ceux qui sont avant le premier lundi dans une semaine n° 0, alors presque toutes les années auront 53 semaines en comptant cette éventuelle semaine 0. En effet, dès que l'année ne commence pas un lundi, tu auras une semaine n° 0, et dans le cas où l'année commence un lundi (comme en 2007, où il n'y a donc pas de semaine 0), il y a une semaine n° 53. Mais il y a un cas très précis où tu vas te retrouver avec à la fois une semaine 0 et une semaine 53 (donc 54 semaines en tout — dont deux d'un seul jour grin), c'est celui d'une année bissextile commençant un dimanche, comme 2012.
squalyl (./8) :
heu, trouver une semaine 53 je peux le faire, si je connais la date du début de la semaine 1 suivante smile.gif
Ben si tu connais le début de la semaine 1 suivante tu peux trouver la dernière semaine d'une année, mais ça ne te dit pas si c'est la n° 52 ou la n° 53, enfin pas sans calcul ^^ (bon bien sûr si tu connais aussi la semaine 1 précédente tu peux faire la différence et diviser par 7 mais bon cheeky). Ta dernière semaine sera la n° 53 si elle commence le 31 décembre, ou bien si c'est une année bissextile et qu'elle commence le 30 décembre.

edit : sextuple cross zzz angry
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

15

squalyl (./12) :
Si la première semaine de l’année est incomplète (c’est le cas six fois sur sept ; quand le premier janvier n’est pas un lundi), elle est numérotée 1 dès lors qu’elle a au moins quatre jours, 0 sinon.
OK (bon il est faux que ça arrive six fois sur sept, enfin statistiquement c'est vrai mais il n'y a pas une période de 7 ans, mais bon...)

Bon ça change pas grand chose à ce que je viens de dire, il reste vrai que presque toutes les années ont 53 semaines, simplement ces semaines seront numérotées de 0 à 52 si l'année commence un vendredi, un samedi ou un dimanche, et de 1 à 53 si elle commence un lundi, un mardi, un mercredi ou un jeudi. Le cas particulier de l'année bissextile commençant un dimanche reste, avec ses 54 semaines numérotées de 0 à 53.
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

16

voila smile

enfin, quelle que soit la manière de le dire (semaines incomplètes toussa...) les algos de l'univ du mans dont j'ai donné la page fonctionnent. Ils me donnent la bonne date pour la semaine 1.

merci de ces échanges constructifs smile

17

squalyl (./12) :
Si la première semaine de l’année est incomplète (c’est le cas six fois sur sept ; quand le premier janvier n’est pas un lundi), elle est numérotée 1 dès lors qu’elle a au moins quatre jours, 0 sinon.

eek sick On ne peut pas plus illogique. sad
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

18

en effet, mais bon, tous les calendriers que je connais numérotent les semaines de la même façon, donc même si c'est space, ça doit bien être ça sorry

19

Sally (./15) :
squalyl (./12) :
Si la première semaine de l’année est incomplète (c’est le cas six fois sur sept ; quand le premier janvier n’est pas un lundi), elle est numérotée 1 dès lors qu’elle a au moins quatre jours, 0 sinon.
OK (bon il est faux que ça arrive six fois sur sept, enfin statistiquement c'est vrai mais il n'y a pas une période de 7 ans, mais bon...)

Euh statistiquement c'est faux aussi, la probabilité exacte est multiple de 1/400 cheeky (tu voulais dire "statistiquement sur tous les calendriers grégoriens" peut-être ? hehe)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

20

en fait je me suis aperçu après que c'était faux aussi mais j'ai eu la flemme d'éditer ^^
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

21

le truc le plus drôle que je remarque c'est que par exemple, la dernière semaine de 1984 a deux numéros: 53 et 1 grin et qu'on prend la semaine 1, car elle contient le premier lundi de l'année, mais qu'alors, 1984 a deux semaines "1" #tricouic# (donc le nb de semaines par an est indépendant de la numérotation des semaines, parce que j'ai besoin de savoir que 1984 a 52 semaines, et pas 53, pour faire la correction!

22

J'ai rien compris cheeky évidemment que le nombre de semaines par an est indépendant de la façon dont tu les numérotes, encore heureux cheeky
Et sinon c'est la question que je t'ai posée il y a 15 posts non ? sur comment tu numérotes les semaines à cheval sur deux années, c'est logique qu'elles aient deux numéros différents selon l'année que tu considères ; mais du coup je ne comprends pas pourquoi 1984 aurait deux semaines "1" : la dernière semaine ne porte le numéro 1 qu'en 1985... confus
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

23

oué en fait y'a 3 jours dans la semaine 52 et 4 jours dans la semaine 1 de 1985, mais c'est sur la même ligne de calendrier...

(brayf)

24

Je ne comprends pas trop le problème sur le numéro des semaines. Qu'est-ce qui est compliqué ou illogique de numéroter la semaine dans l'année où elle a le plus de jours ? C'est bien défini dans l'ISO 8601:1988.
squalyl (./12) :
j'ai trouvé

http://www.univ-lemans.fr/~hainry/articles/semaine.html
Je trouve leurs formules vraiment trop moches, elles ne fonctionnent plus après 2099.
avatar

25

pourquoi pas après 2099? hum

Et sinon merci pour l'ISO, comme ça c'est fixé
http://en.wikipedia.org/wiki/ISO_8601#Week_dates

26

squalyl (./25) :
pourquoi pas après 2099? hum
Ha non, c'est bon, j'avais mal lu une ligne smile Mais les formules sont quand même moches tongue
avatar

27

pencil pour le nb de jours par mois par exemple grin

28

squalyl (./12) :
j'ai trouvé

http://www.univ-lemans.fr/~hainry/articles/semaine.html
Si la première semaine de l’année est incomplète (c’est le cas six fois sur sept ; quand le premier janvier n’est pas un lundi), elle est numérotée 1 dès lors qu’elle a au moins quatre jours, 0 sinon.
De ça, j'en ai déduit un critère sympa happy.

Soit J le premier jeudi de l'année, il tombera forcément entre le 1er et le 7 janvier, inclus.
Soit S la semaine, allant du lundi au dimanche, qui contient J.
Si J tombe le 4, le 1er est un lundi, donc on commence l'année par une semaine complète qui sera numérotée 1, donc S=1.
Si J tombe le 5, le 6 ou le 7, on a au début de l'année, juste avant S, une semaine incomplète comportant 1, 2 ou 3 jours et qui sera donc numérotée 0, donc S=1.
Si J tombe le 1er, le 2 ou le 3, S est une semaine incomplète comportant 4, 5 ou 6 jours et qui sera donc numérotée 1, donc S=1.
Conclusion : la semaine 1 est celle qui contient le premier jeudi de l'année.
C'est peut-être un moyen de simplifier la recherche de la semaine 1, non ?
avatar
Je ne suis pas développeur Java : je suis artiste Java.
Ce que l’on conçoit bien s’énonce clairement, / Et le code pour l’écrire arrive aisément.
Hâtez-vous lentement ; toujours, avec méthode, / Vingt fois dans l’IDE travaillez votre code.
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
You don't use science to show that you're right, you use science to become right.

29

30

(tu lis pas les liens que tu postes toi-même, squalyl ? trifus)
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#