isu_san
Messages postés63Date d'inscriptionlundi 6 septembre 2004StatutMembreDernière intervention26 juillet 2011
-
5 nov. 2008 à 10:09
isu_san
Messages postés63Date d'inscriptionlundi 6 septembre 2004StatutMembreDernière intervention26 juillet 2011
-
6 nov. 2008 à 17:53
Bonjour à tous,
j'ai essayé de trouver une fonction javascript pour calculer la date du dernier dimanche d'un mois donné. j'ai bien trouvé quelque chose mais je n'arrive pas à m'en servir. Est ce que vous pourriez m'indiquer ce qui cloche.
D'avance merci
<script language="javascript">
function dDimanche(year,month) {
var dimanche;
var dateTest;
for( var i=nbjourmois(year,month); i > 0; i-- ){
dateTest = new Date(year, month, i);
if( dateTest.getDay() == 0 ) {
dimanche = dateTest;
break;
}
}
return dimanche;
}
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 6 nov. 2008 à 11:50
appel : var toto=nom( valeur_1, valeur_2... )
valeur_1, valeur_2 ce sont les paramètres que l'on "passe" à la fonction
var toto= fera que ce que renvoie cette fonction ira dans toto
mais on peut faire "bien sûr" : if ( nom( valeur_1, valeur_2... ) ... ) .... ou autre
on fait directement un test sur ce que retourne la fonction
fonction nom( paramètre_1, paramètre_2, ... )
{ on traite paramètre_1, paramètre_2....
( qui seront ici, égal à valeur_1, valeur_2... de l'appel )
return "résultat de la fonction";
( donc toto sera = à "résultat de la fonction"
derrière l'appel )
}
c'est "quasi" la même choses avec tous les langages
remarque, la boucle pour trouver le dernier dimanche est probablement inutile on peut obtenir le n° de jour dans la semaine ( de 0 dimanche à 6 samedi )
dernier jour du mois - le n° de jour dans la semaine de ce dernier jour = dernier dimanche
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 5 nov. 2008 à 10:36
bonjour,
sans tenir compte des résultats (!) :
dDimanche(dateNow.getYear(),2);
c'est quoi dateNow ?
document.write(dimanche);
c'est quoi dimanche ? il y a bien une variable dimanche
définie. dans la fonction dDimanche, donc locale à cette fonction
compte le nombre de { et de } dans la fonction nbjourmois
return nbjour;
document.write(nbjour); ne sera jamais exécuté
attention à document.write, s'il est utilisé lorsque la page
a été totalement interprétée ( cas d'une function appelée sur
un évênement par exemple ), ça efface toute la page, y compris
le javascript
après...( s'il n'y a pas d'autres erreurs de syntaxe déjà )
reste à contrôler les résultats !
isu_san
Messages postés63Date d'inscriptionlundi 6 septembre 2004StatutMembreDernière intervention26 juillet 2011 5 nov. 2008 à 12:04
Merci de te pencher sur mon probleme (enfin c'est surtout moi le probleme ;) )
apres correction des erreurs que tu as soulevées, je n'ai toujours rien du tout en retour.
il y a quelque chose que je pense ne pas saisir, c'est l'utilisation de "return"
function dDimanche(year,month) {
var dateTest;
for( var i=nbjourmois(year,month); i > 0; i-- ){
dateTest = new Date(year, month, i);
if( dateTest.getDay() == 0 ) {
dimanche = dateTest;
break;
}
}
return dimanche;
}
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 5 nov. 2008 à 12:07
Salut,
Moi ce que je n'arrive pas a comprendre ni a voir, c'est est déclaré la variable dimanche, parce qu'on dirai que tu l'utilise sans la déclarer avec le mot clée "var" !
a++
Si la réponse vous convient, pensez : Réponse acceptée !
Vous n’avez pas trouvé la réponse que vous recherchez ?
isu_san
Messages postés63Date d'inscriptionlundi 6 septembre 2004StatutMembreDernière intervention26 juillet 2011 5 nov. 2008 à 12:18
d'accord, donc je declare
var dimanche
en dehors des fonctions.
Dans la fonction dDimanche elle est censée prendre la valeur de dateTest, et avec "return dimanche" je voulais recuperer le resultat mais j'ai un joli undifined qui apparait.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 5 nov. 2008 à 12:41
quand on met au point il faut faire du "débugging"
<!-- pour validation w3c ok ;o)) -->----
Chrome
, contrôler page actuelle / Options pour développeurs
/ Console Javascript, ----
FireFox
, Outils / Console d'erreurs
et mieux : télécharger mon Site][M'écrire]
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 5 nov. 2008 à 17:26
Bonjour,
en accord avec ce qui précéde je
rajouterais que...
<table bgcolor= "#e6effe" border="0" cellpadding="5" cellspacing="0" width="100%">----, sinon... est-ce qu'à tous les coups, ta
fonction
nbjourmois retourne ce qu'il faut quand il faut et
toujours
?</td>
</td></tr></tbody></table>
Dans ta
fonction nbjourmois regarde
à quel niveau tu as placé ton return
Si je ne m'abuse il est dans la condition
if( nbjour == -1 )
en d'autres termes tu
auras un résultat différent de undefined SI et
SEULEMENT SI tu demandes le nombre de jours du mois de février et qui plus est
d'une année non bisextile UNIQUEMENT
Un code bien indenté permet souvent
de voir la coquille, cela se joue à un q prés...
;O)
isu_san
Messages postés63Date d'inscriptionlundi 6 septembre 2004StatutMembreDernière intervention26 juillet 2011 6 nov. 2008 à 11:27
Bonjour,
bon j'ai fini par reussir a la faire tourner, mais bcp de chose m'echappe encore.
cette fonction vous aurez bien compris que ce n'est pas moi qui l'ai ecrite aussi il y a des choses que je ne comprends pas. la voila en entier qui fonctionne :
<script language="javascript">
function inDST(dateNow) {
var dmar;
var doct;
var dateTest;
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 6 nov. 2008 à 12:00
Bonjour,
tout ce passe dans cette fonction
function dDimanche( year, month) {
var dimanche;
var dateTest;
//-- boucle
du dernier jour du mois au premier, en ordre decroissant
for(
var i = nbjourmois ( year, month); i >
0; i-- ) {
//-- Init date pour recuperation de
l'indice du jour
dateTest = new Date( year, month, i);
isu_san
Messages postés63Date d'inscriptionlundi 6 septembre 2004StatutMembreDernière intervention26 juillet 2011 6 nov. 2008 à 12:22
Et bien merci pour votre aide et vos explications
A propos du dernier jour, si j'ai bien compris, ta methode ne peut fonctionner que pour le dimanche (0) puisqu'il debute la semaine. dans tous les autres cas il est necessaire de faire cette boucle puisque la fin de la semaine peut etre au dela du dernier jour du mois. c'est bien ca ?
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 6 nov. 2008 à 12:43
>>ta methode ne peut fonctionner que pour le dimanche (0)
ben non !
exemple :
dernier jour du mois d'octobre 2008 : vendredi, soit le 5ème jour de la semaine
31/10/2008 - 5 = 26/10/2008 le dernier dimanche quoi
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 6 nov. 2008 à 12:58
nickel si tout baigne.
la gestion des dates est top (?) en js, y'a tout (?) ce qu'il faut
tous les langages ne permettent pas de faire
date + ou - une valeur = nouvelle date
faut parfois se le "faire à la main", et là, une boucle
ferait probablement l'affaire.
isu_san
Messages postés63Date d'inscriptionlundi 6 septembre 2004StatutMembreDernière intervention26 juillet 2011 6 nov. 2008 à 14:04
Merci beaucoup, avec ta méthode j'arrive à ça, qui fonctionne parfaitement, avec en plus la satisfaction de l'avoir fait moi meme... Ca doit surement pouvoir se simplifier avec d'autres choses que j'ignore....
<script language="javascript">
var jour=new Date();
var annee=jour.getFullYear();
var dmar=new Date(annee,2,31) ;
var doct=new Date(annee,9,31) ;
var mar;
var dnmar=dmar.getDay();
if (dnmar==0) {
mar=dmar;
}
else {
var nmar=31-dnmar;
mar=new Date(annee,2,nmar);
}
var oct;
var dnoct=doct.getDay();
if (dnoct==0) {
oct=doct;
}
else {
var noct=31-dnoct;
oct=new Date(annee,9,noct);
}
if (jour.getTime()-mar.getTime()>0 && jour.getTime()-oct.getTime()<0) {
alert("été");
}
else {
alert("hiver");
}
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 6 nov. 2008 à 14:57
le ch'tiot 31 : dans njour=31-nbj;
pas toujours 31 jours le mois...
si tu réutilisais la fonction pour autre chose que l'heure d'été/hiver !
pour ici effectivement c'est ok.
je n'aurais pas testé le cas nbjour=0
puisque valeur-0=valeur, alors...
mais bon... chacun fait comme il le sent là
et je ne sais pas si ce serait plus mieux...