Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Date en Javascript

2 views
Skip to first unread message

Guy Gruais

unread,
Oct 15, 2009, 9:17:35 AM10/15/09
to
Bonjour,

J'ai pomp� sur le web un script en JS pour que la date de modification
de la page soit chang�e automatiquement.

Voici le script :

<SCRIPT type="text/javascript">
function Tableau(n) {
this.length=n;
return this; }

function DateModif()
{
NomMois =new Tableau(12);
NomMois[1] ="Janvier";
NomMois[2] ="F�vrier";
NomMois[3] ="Mars";
NomMois[4] ="Avril";
NomMois[5] ="Mai";
NomMois[6] ="Juin";
NomMois[7] ="Juillet";
NomMois[8] ="Ao�t";
NomMois[9] ="Septembre";
NomMois[10]="Octobre";
NomMois[11]="Novembre";
NomMois[12]="D�cembre";
Date =new Date(document.lastModified);
var Mois =NomMois[Date.getMonth()+1];
var Annee =Date.getYear()+0;
return Date.getDate()+" "+Mois+" "+Annee;
}
</SCRIPT>

Si IE et Opera affichent bien l'ann�e 2009, Firefox s'ent�te � afficher
109 !!
Quelqu'un peut me dire pourquoi ?

Merci.

--
Cordialement.

guy.s...@free.invalid
http://paysderetz.free.fr/
http://fonderie.indret.free.fr/


Olivier Miakinen

unread,
Oct 15, 2009, 10:05:50 AM10/15/09
to
Le 15/10/2009 15:17, Guy Gruais a ï¿œcrit :
>
> J'ai pompᅵ sur le web un script en JS pour que la date de modification
> de la page soit changï¿œe automatiquement.
>
> [...]
> var Annee =Date.getYear()+0;

Le script doit ï¿œtre un peu ancien. Essaye donc de remplacer getYear()
par getFullYear() !

Au passage, je te signale l'existence d'un groupe consacrᅵ ᅵ JavaScript
oᅵ ta question aurait ᅵtᅵ plus en charte : fr.comp.lang.javascript.

Cordialement,
--
Olivier Miakinen

Olivier Miakinen

unread,
Oct 15, 2009, 10:15:04 AM10/15/09
to
Je n'ai pas complètement répondu à ta question en te disant *pourquoi*
Firefox répond 109 au lieu de 2009.

Le 15/10/2009 15:17, Guy Gruais a écrit :
>
> [getYear()]
>
> Si IE et Opera affichent bien l'année 2009, Firefox s'entête à afficher

> 109 !!
> Quelqu'un peut me dire pourquoi ?

Firefox est le seul à respecter le standard ECMA-262.

<http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf>
B.2.4 Date.prototype.getYear ( )
NOTE
The getFullYear method is preferred for nearly all purposes, because it
avoids the "year 2000 problem."
When the getYear method is called with no arguments the following steps
are taken:
1. Let t be this time value.
2. If t is NaN, return NaN.
3. Return YearFromTime(LocalTime(t)) − 1900.
</>

Sachant que getFullYear() retourne YearFromTime(LocalTime(t)), si cette
valeur est 2009, alors il est normal que getYear() retourne 2009 - 1900,
c'est-à-dire 109.

Guy Gruais

unread,
Oct 15, 2009, 10:16:47 AM10/15/09
to
Bonjour,

Vous allez �tre infiniment heureux d'apprendre que Olivier Miakinen
vient d'�crire :

> Le script doit �tre un peu ancien. Essaye donc de remplacer getYear()
> par getFullYear() !

Merci. �a fonctionne avec les trois navigateurs.
Au passage, je me suis amus� � remplacer getMonth() par getFullMonth().
L�, ce fut la catastrophe

> fr.comp.lang.javascript.

Pris bonne note

Encore merci

Olivier Miakinen

unread,
Oct 15, 2009, 10:33:49 AM10/15/09
to
Le 15/10/2009 16:16, Guy Gruais a ï¿œcrit :
>
> getFullMonth()

:-D

C'est quoi cette bï¿œte ? Strictement inconnue de la doc de rï¿œfï¿œrence
JavaScript (du moins ECMA-262).

Guy Gruais

unread,
Oct 15, 2009, 11:02:34 AM10/15/09
to
Bonjour,

Vous allez �tre infiniment heureux d'apprendre que Olivier Miakinen
vient d'�crire :

> C'est quoi cette b�te ?

Je ne connais strictement rien en JS :-(
Je m'�tais dit b�tement que si l'on pouvait transformer getYear() en
getFullYear() (et obtenir ainsi un meilleur r�sultat), je pouvais
peut-�tre tenter de transformer getMonth() en getFullMonth() :-)

Ben, non �a ne marche pas. C'est aussi un peu comme �a qu'on arrive �
apprendre
Promis, j'essaierais de ne pas recommencer.

Sergio

unread,
Oct 15, 2009, 12:39:47 PM10/15/09
to
Guy Gruais a �crit :

> Bonjour,
>
> J'ai pomp� sur le web un script en JS pour que la date de modification
> de la page soit chang�e automatiquement.

> var Annee =Date.getYear()+0;


> return Date.getDate()+" "+Mois+" "+Annee;
> }
> </SCRIPT>
>
> Si IE et Opera affichent bien l'ann�e 2009, Firefox s'ent�te � afficher
> 109 !!
> Quelqu'un peut me dire pourquoi ?

if (Annee < 1900) Annee+=1900 ;

et on est tranquille jusqu'en 3800...

--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org

Olivier Miakinen

unread,
Oct 15, 2009, 12:50:48 PM10/15/09
to
Le 15/10/2009 18:39, Sergio a ï¿œcrit :

>
> if (Annee < 1900) Annee+=1900 ;
>
> et on est tranquille jusqu'en 3800...

getFullYear()

et on est tranquille jusqu'en 275760...

:-D

SAM

unread,
Oct 15, 2009, 1:04:59 PM10/15/09
to
Le 10/15/09 5:02 PM, Guy Gruais a �crit :

> Bonjour,
>
> Vous allez �tre infiniment heureux d'apprendre que Olivier Miakinen
> vient d'�crire :
>
>> C'est quoi cette b�te ?
>
> Je ne connais strictement rien en JS :-(

Tu sais que tu peux aussi obtenir la date c�t� serveur ?
Au moins on est alors assez certain d'avoir la bonne.

Bon, si c'est juste pour lastModified c'est moins important.

Encore que ...
c'est comme �a que mes pages de 1999 sont dat�es de 2004
(le jour o� mon h�bergeur a chang� mon espace de support, et qu'� la
copie les lastModified ont �t� updat�s ...)

--
sm

SAM

unread,
Oct 15, 2009, 1:07:08 PM10/15/09
to
Le 10/15/09 6:50 PM, Olivier Miakinen a ï¿œcrit :

Rha la la ! Cet engouement pour le moindre effort !

--
sm

Sergio

unread,
Oct 15, 2009, 1:18:13 PM10/15/09
to
Olivier Miakinen a ï¿œcrit :

Oui, mais faut laisser du travail pour les informaticiens du 38ï¿œme siï¿œcle...

era

unread,
Oct 17, 2009, 3:42:41 AM10/17/09
to
Sergio a �crit :

> if (Annee < 1900) Annee+=1900 ;
>
> et on est tranquille jusqu'en 3800...
>

Mais comment feras tu en 3801 ?
Dis le moi pour que je sois pr�t !

--
era
http://tk5yp.fr/webcam/calvi_revelata.htm

Olivier Miakinen

unread,
Oct 17, 2009, 5:44:41 AM10/17/09
to
Le 17/10/2009 09:42, era a ï¿œcrit :

>
>> if (Annee < 1900) Annee+=1900 ;
>>
>> et on est tranquille jusqu'en 3800...
>>
> Mais comment feras tu en 3801 ?

Il fera comme moi en 275761

> Dis le moi pour que je sois prï¿œt !

Prï¿œpare-toi bien !

--
Olivier Miakinen

era

unread,
Oct 18, 2009, 4:24:20 AM10/18/09
to
Olivier Miakinen a ï¿œcrit :
Alors rendez-vous le 1er janvier 3801
aux premiï¿œres heures du matin si on
a pas la gueule de bois !

--
era
http://tk5yp.fr/webcam/calvi_revelata.htm

rm

unread,
Oct 19, 2009, 3:38:24 AM10/19/09
to
Salut Olivier,
Le jeudi 15 octobre 2009 � 16:15, Olivier Miakinen a �crit :

> Je n'ai pas compl�tement r�pondu � ta question en te disant *pourquoi*
> Firefox r�pond 109 au lieu de 2009.
>
> Le 15/10/2009 15:17, Guy Gruais a �crit :
>>
>> [getYear()]
>>
>> Si IE et Opera affichent bien l'ann�e 2009, Firefox s'ent�te � afficher

>> 109 !!
>> Quelqu'un peut me dire pourquoi ?
>

> Firefox est le seul � respecter le standard ECMA-262.

Quelle �dition ?

Ce que tu cites figure dans une _annexe_ de la sp�cification ECMA-262,
troisi�me �dition, dans laquelle il est pr�cis�:
� This non-normative annex suggests uniform semantics for such properties
without making the properties or their semantics part of this standard. �.
Donc il semblerait que cette annexe se contente de sugg�rer plus que
d'imposer l'interpr�tation standardis�e/normalis�e de ce getYear().
Concernant Opera, depuis la version 9.5 et pour des raisons de
compatibilit� � cross-browser � comme ils disent, getyear() retourne
l'ann�e compl�te pour les ann�e > 1999 et < 1900. Cela n'est pas conforme
bien s�r avec la norme ECMA, premi�re �dition (ES1) de 1997 (et seconde
�dition) qu'Opera (versions < 9.5) respectait et que Firefox continue �
suivre ;)

@+
--
rm - http://opera-fr.com

Olivier Miakinen

unread,
Oct 19, 2009, 4:28:21 AM10/19/09
to
Le 19/10/2009 09:38, rm a ï¿œcrit :> Ce que tu cites figure dans une _annexe_ de la spï¿œcification ECMA-262,
> troisiᅵme ᅵdition, dans laquelle il est prᅵcisᅵ:
> ᅵ This non-normative annex suggests uniform semantics for such properties
> without making the properties or their semantics part of this standard. ᅵ.
> Donc il semblerait que cette annexe se contente de suggï¿œrer plus que
> d'imposer l'interprï¿œtation standardisï¿œe/normalisï¿œe de ce getYear().

Bien vu, et merci de la prᅵcision. Note que le ᅵ draft final ᅵ de la
version 5 suggï¿œre toujours la mï¿œme implï¿œmentation, respectï¿œe par Firefox
comme l'ᅵcrivait Guy (je n'ai pas vᅵrifiᅵ), mais bien sᅵr toujours sans
en faire une norme.

> Concernant Opera, depuis la version 9.5 et pour des raisons de

> compatibilitᅵ ᅵ cross-browser ᅵ comme ils disent, getyear() retourne
> l'annï¿œe complï¿œte pour les annï¿œe > 1999 et < 1900. Cela n'est pas conforme
> bien sï¿œr avec la norme ECMA, premiï¿œre ï¿œdition (ES1) de 1997 (et seconde
> ᅵdition) qu'Opera (versions < 9.5) respectait et que Firefox continue ᅵ
> suivre ;)

La conclusion qu'il faut en tirer, c'est de ne *surtout pas* utiliser
cette fonction getYear() qui, outre qu'elle ne fait pas partie de la
norme, se comporte diffᅵremment d'un navigateur ᅵ un autre.

Guy Gruais

unread,
Oct 20, 2009, 4:47:18 AM10/20/09
to
Bonjour,

Vous allez �tre infiniment heureux d'apprendre que Olivier Miakinen
vient d'�crire :

> La conclusion qu'il faut en tirer, c'est de ne *surtout pas* utiliser


> cette fonction getYear() qui, outre qu'elle ne fait pas partie de la

> norme, se comporte diff�remment d'un navigateur � un autre.

Malheureusement comment un n�ophyte qui ne conna�t pas le JS peut-il
savoir que le script qu'il vient de trouver sur le net ne respecte pas
certaines recommandations ?
A moins de tester comme je l'ai fait avec plusieurs navigateurs.

CrazyCat

unread,
Oct 20, 2009, 4:55:39 AM10/20/09
to
Guy Gruais wrote:
>> La conclusion qu'il faut en tirer, c'est de ne *surtout pas* utiliser
>> cette fonction getYear() qui, outre qu'elle ne fait pas partie de la
>> norme, se comporte diff�remment d'un navigateur � un autre.
> Malheureusement comment un n�ophyte qui ne conna�t pas le JS peut-il
> savoir que le script qu'il vient de trouver sur le net ne respecte pas
> certaines recommandations ?
> A moins de tester comme je l'ai fait avec plusieurs navigateurs.

Je pense que le n�ophyte aura cherch� la fonction sur son moteur de
recherche et aura peut-�tre trouv� de bons sites qui l'explique.

Mais de toutes mani�res, n�ophyte ou pas, on teste toujours sur
diff�rents navigateurs sit�t qu'il s'agit de CSS ou de JS, les
comportements d�pendant des navigateurs.

Tu as donc eu la bonne d�marche.

Tiens, un point suppl�mentaire: d'en avoir discut� ici va cr�er d'autres
r�f�rences sur le sujet, ce qui aidera les prochains.

--
R�seau IRC Francophone: http://www.zeolia.net
Aide et astuces : http://www.g33k-zone.org
Communaut� Francophone sur les Eggdrops: http://www.eggdrop.fr

Guy Gruais

unread,
Oct 20, 2009, 5:02:56 AM10/20/09
to
Bonjour,

Vous allez �tre infiniment heureux d'apprendre que CrazyCat vient
d'�crire :


> Tu as donc eu la bonne d�marche.

J'en suis tout rouge de confusion :-)

Olivier Miakinen

unread,
Oct 20, 2009, 5:53:54 AM10/20/09
to
[Copie et suivi vers fr.comp.lang.javascript]

Le 20/10/2009 10:47, Guy Gruais a ï¿œcrit :


>
>> La conclusion qu'il faut en tirer, c'est de ne *surtout pas* utiliser
>> cette fonction getYear() qui, outre qu'elle ne fait pas partie de la

>> norme, se comporte diffᅵremment d'un navigateur ᅵ un autre.
>
> Malheureusement comment un nï¿œophyte qui ne connaï¿œt pas le JS peut-il

> savoir que le script qu'il vient de trouver sur le net ne respecte pas
> certaines recommandations ?

S'il est vraiment nï¿œophyte, il n'essaye pas de faire du JS. ;-)

Sinon, il peut toujours poser la question ᅵ des moins nᅵophytes, par
exemple dans le groupe fr.comp.lang.javascript (ou fciwa, bien sï¿œr,
s'il est trop nï¿œophyte pour trouver le bon groupe ;-)).

Il faut quand mᅵme savoir que l'immense majoritᅵ des scripts que l'on
trouve sur le net, que ce soit en JavaScript ou en PHP (je ne parlerai
pas des autres que je ne connais pas), sont foireux.


Cela dit, il y a des indices qui devraient rᅵvᅵler ᅵ coup sᅵr de mauvais
scripts JavaScript, et ce serait peut-ï¿œtre une bonne idï¿œe d'en faire la
liste.

Je commence.
- <script language="javascript"> au lieu de type="text/javascript"
- test de document.all ou document.layers
- de maniï¿œre gï¿œnï¿œrale, tentative de reconnaï¿œtre le navigateur en
testant des propriï¿œtï¿œs dont on n'a pas besoin (plutï¿œt que de tester
les propriï¿œtï¿œs dont on a rï¿œellement besoin avant de les utiliser)

ᅵ suivre...

0 new messages