Rechercher : dans
Par :

[javascript] Date()

Dernière réponse le 8 jan 2009 à 10:43:02 kciop, le 31 mar 2006 à 20:00:30 
 Signaler ce message aux modérateurs

Bonjour,

J'ai un problème avec la classe Date en javascript.

javascript:date = new Date(); date.setMonth(0);alert(date.getMonth());

Ce bout de code mis dans la barre d'adresse d'un navigateur m'affiche une fenetre avec un : 0.

javascript:date = new Date(); date.setMonth(1);alert(date.getMonth());

ce code lui m'affiche : 2

javascript:date = new Date(); date.setMonth(2);alert(date.getMonth());

et celui ci m'affiche : 2 egalement

Si je comprends bien l'objet date doit renvoyer le numéro du mois de l'année - 1 or j'ai l'impression que ca ne marche pas...

Est ce que j'ai fait une erreur dans ce ptit bout de code?

Merci de votre aide!
--
Kciop
Configuration: windows XP pro IE6 et Firefox 1.0.7

Meilleures réponses pour « [javascript] Date() » dans :
Javascript - L'objet Date Voir Les particularités de l'objet Date L'objet Date permet de travailler avec toutes les variables qui concernent les dates et la gestion du temps. Il s'agit d'un objet inclus de façon native dans Javascript, et que l'on peut toujours utiliser. La...
Javascript - Date de dernière modification de la page Voir Il est possible, en langage Javascript, d'afficher la date de dernière modification de la page Web grâce à la propriété lastModified de l'objet document :
[Mozilla Thunderbird] Fichier winmail.dat VoirSymptôme : Un correspondant vous envoie un mail avec une pièce jointe, mais celle-ci n'apparait pas dans le mail : il n'y a qu'un fichier winmail.dat attaché. Explication : Ce problème survient lorsque votre correspondant vous expédie un mail...
YouTube - Vous avez désactivé JavaScript VoirProblème Lorsque vous naviguez sur certains sites, tels que YouTube, ceux-ci affichent le message d'erreur suivant : Vous avez désactivé JavaScript ou bien vous possédez une ancienne version d'Adobe Flash Player. Téléchargez la dernière version...
Accélérer les accès disque (désactiver la date de dernier accès) VoirLa plupart des systèmes d'exploitation actuels utilisent des systèmes de fichiers avec des fonctions avancées : gestion des droits, journalisation... Entre autres, NTFS (Windows) et ext3 (Linux) sont capables d'enregistrer la date de dernier accès à...
Javascript - Les événements VoirQu'appelle-t-on un événement? Les événements sont des actions de l'utilisateur, qui vont pouvoir donner lieu à une interactivité. L'événement par excellence est le clic de souris, car c'est le seul que le HTML gère. Grâce au Javascript il est...
Fichier DAT VoirFormat DAT Un fichier DAT Un fichier .dat est un fichier de données (.DAT signifie data). En général, il s'agit d'un fichier binaire, créé par un programme et utilisable uniquement par ce programme, ce qui signifie qu'il n'est pas censé être ouvert...
Javascript - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. En Javascript, les noms de variables peuvent être aussi long que l'on désire,...

1

ricric, le 31 mar 2006 à 22:17:29

Bonsoir
Les mois sont indicés de 0 à 11 et non 1 à 12.
0 pour Janvier
...
11 pour décembre

En espérant t'aider.

Répondre à ricric

2

kciop, le 31 mar 2006 à 22:59:45

Bonjour,

Je tiens tout d'abord à m'excuser car mon message n'était pas clair.
Mon code fait quelque chose d'assez stupide puisqu'il assigne un mois et tout de suite apres il l'affiche.
En gros, qu'il affiche de 0 à 11 ou de 1 à 12 n'a que peu d'importance.
setMonth assigne donc un mois (de 0 à 11) et getMonth l'affiche (de 0 à 11).

Le problème c'est qu'on lui assigne 1 et il nous affiche 2. Alors que pour 2 il nous affiche bien 2. Il en va de même pour d'autres numéros...

Je voulais savoir si c'était un bug ou si j'avais mal tapé quelque chose sur ce bout de code. Est ce que quelqu'un peu m'expliquer pourquoi Date fonctionne ainsi?

Merci
--
Kciop

Répondre à kciop

3

HackTrack, le 4 avr 2006 à 08:54:37

Salut!

Du code Javascript n'est pas une URL. Dès lors, si tu le tapes dans la barre d'adresse de ton navigateur, il y a beaucoup de chance que cela ne fonctionne pas.

Insère ton code dans une page HTML et tu verras qu'il fonctionne tout-à-fait correctement car là il sera interprété:


<html>
<head>
<script>
  function testDates(){
    date = new Date(); date.setMonth(0);alert(date.getMonth());
    date = new Date(); date.setMonth(1);alert(date.getMonth());
    date = new Date(); date.setMonth(2);alert(date.getMonth());
  }
</script>
</head>
<body onload="testDates();">
</body>
</html>


;-)
HackTrack

Répondre à HackTrack

4

kciop, le 4 avr 2006 à 11:18:22

Hello!

Bon et bien merci pour les réponses mais j'ai trouvé pourquoi ca ne marchait pas.

A+
--
kciop

Répondre à kciop

5

gavors, le 31 déc 2008 à 14:32:33

J'ai exactement le même souci, quelle était ta solution ?


Gav

Répondre à gavors

6

kciop, le 8 jan 2009 à 03:58:44

C'est un problème assez bête finalement :
Tu utilises ta fonction le 31 décembre donc month=11 day=31.
Si tu mets month=10 (novembre) ou n'importe quel mois qui n'a pas de 31, alors javascript fait un ptit calcul : 31 novembre ça n'existe pas donc c'est le 1er décembre.
La solution consiste à créer une date qui commence un premier janvier, par exemple tu fais new Date(0) qui équivaut au 1er janvier 1970. Ensuite tu sets ce que tu veux pour créer ton objet date.

Voilà!

Répondre à kciop

7

 gav, le 8 jan 2009 à 10:43:02

Un grand merci !!
C'était on ne peut plus logique... Mais c'est vrai que sur le coup, c'est assez étonnant comme fonctionnement !

;-D

Répondre à gav