Activation selon heure (fct° faite mais pb)
Résolunrobin Messages postés 49 Statut Membre -
J'ai une page avec 2 paramétrages horaires: horaires de début, horaires de fin.
Ce paramétrage s'effectue par le biais de plusieurs ListBox permettant le choix de l'heure et de la date.
En gros, je lis la date et l'heure du PC et je la compare avec les paramétrages fournis par le choix effectuer dans les listBox.
Si la date et l'heure du PC sont comprises entre la "date et l'heure de début" et la "date et l'heure de fin", un message d'alerte affiche "ACTIVATION" sinon "DEFAUT".
Voila mon prooblème:
Tel que mon programme est fait, chaque horaire doit borner l'horaire du PC (chaque élément de la date PC doit êtres compri entre chaque élément de l'horaire paramétré de début et celle de fin). Ils ne dépendent pas les uns des autres.
Imaginons que nous sommes le 09/05/2005 19:09.
Horaire début sera forcément:
Jour <= 09
Mois <= 05
Année <= 2005
Heure <= 19
Minute <= 09
Horaire fin sera forcément:
Jour >= 09
Mois >= 05
Année >= 2005
Heure >= 19
Minute >= 09
Ce n'est pas ce que je veux. Je voudrais que l'heure de fin puisse être 08h si le jour est supérieur à 09.
Et comme je ne vois pas comment faire, je fais appel à vous.
Merci d'avance à ce qui se pencherons sur le problème.
Voila le code de ma page:
=======================================
=======================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Tests: Affichage du contenu des ListBox dans des messages d'alert</TITLE>
<SCRIPT language=JavaScript type=text/javascript>
/* Fonction Horloge */
var dd, delai;
function debuteTemps(delai1)
{
var hhmmss = " ", min, sec;
var jjmmaaaa = " ", mois, an;
delai = delai1;
adate = new Date()
hhmmss += adate.getHours();
min = adate.getMinutes();
jjmmaaaa = adate.getDate();
// mois =(adate.getMonth()+1);
// an = adate.getFullYear();
if (min < 10)
hhmmss += ":0" + min;
else
hhmmss += ":" + min;
sec = adate.getSeconds();
if (sec < 10)
hhmmss += ":0" + sec;
else
hhmmss += ":" + sec;
hhmmss = " " + hhmmss;
hhmmss = " " + hhmmss;
if (jjmmaaaa < 10)
jjmmaaaa = " 0" + jjmmaaaa;
else
jjmmaaaa += " / " + jjmmaaaa;
mois =(adate.getMonth()+1);
if (mois < 10)
jjmmaaaa += " / 0" + mois;
else
jjmmaaaa += " / " + mois;
an = adate.getFullYear();
if (an < 10)
jjmmaaaa += " / 0" + an;
else
jjmmaaaa += " / " + an;
jjmmaaaa = " " + jjmmaaaa;
jjmmaaaa = " " + jjmmaaaa;
// jjmmaaaa = jjmmaaaa+" / "+ mois+" / "+an;
document.Temps1.Temps1.value = hhmmss;
document.Temps1.Temps2.value = jjmmaaaa;
dd = setTimeout("debuteTemps(delai)",delai1);
}
function Declaration_Horaire()
{
var cf=document.forms[0];
date=new Date();
/* Déclaration des tableaux */
PC_Date=new Array (3); // Création d'un tableau (chaîne de caractère) contenant la DATE du PC (3 éléments: Jours / Mois / Annees)
PC_Heure=new Array (2); // Création d'un tableau (chaîne de caractère) contenant l'HEURE du PC (2 éléments: Heures : Minutes)
PARAM_Date_DBT=new Array (3); // Création d'un tableau (chaîne de caractère) contenant la DATE paramétrée dans les listebox de DEBUT d'Activation (3 éléments: Jours / Mois / Annees)
PARAM_Heure_DBT=new Array (2); // Création d'un tableau (chaîne de caractère) contenant l'HEURE paramétrée dans les listebox de DEBUT d'Activation (2 éléments: Heures : Minutes)
PARAM_Date_FIN=new Array (3); // Création d'un tableau (chaîne de caractère) contenant la DATE paramétrée dans les listebox de FIN d'Activation (3 éléments: Jours / Mois / Annees)
PARAM_Heure_FIN=new Array (2); // Création d'un tableau (chaîne de caractère) contenant l'HEURE paramétrée dans les listebox de FIN d'Activation (2 éléments: Heures : Minutes)
/* Récupération des horaires PC */
PC_Date[0]=PC_Jours=date.getDate(); // Récupération du Jour
PC_Date[1]=PC_Mois=(date.getMonth()+1); // Récupération du Mois
PC_Date[2]=PC_Annees=date.getFullYear(); // Récupération de l'Année
PC_Heure[0]=PC_Heures=date.getHours(); // Récupération de l'Heure
PC_Heure[1]=PC_Minutes=date.getMinutes(); // Récupération des Minutes
/* Récupération des horaires Paramétrées */
/* Paramétrage Horaires de DEBUT */
PARAM_Date_DBT[0]=PARAM_Jours_DBT=Jours_DBT.value;
PARAM_Date_DBT[1]=PARAM_Mois_DBT=Mois_DBT.value;
PARAM_Date_DBT[2]=PARAM_Annees_DBT=Annees_DBT.value;
PARAM_Heure_DBT[0]=PARAM_Heures_DBT=Heures_DBT.value;
PARAM_Heure_DBT[1]=PARAM_Minutes_DBT=Minutes_DBT.value;
/* Paramétrage Horaires de FIN */
PARAM_Date_FIN[0]=PARAM_Jours_FIN=Jours_FIN.value;
PARAM_Date_FIN[1]=PARAM_Mois_FIN=Mois_FIN.value;
PARAM_Date_FIN[2]=PARAM_Annees_FIN=Annees_FIN.value;
PARAM_Heure_FIN[0]=PARAM_Heures_FIN=Heures_FIN.value;
PARAM_Heure_FIN[1]=PARAM_Minutes_FIN=Minutes_FIN.value;
// Tests_Alert();
Activ_Detect();
}
function Activ_Detect()
{
var cf=document.forms[0];
/* Programme Activation de la détection pendant la tranche horaire paramétrée */
if (((PC_Date[2] >= PARAM_Date_DBT[2]) && (PC_Date[2] <= PARAM_Date_FIN[2]))
&& ((PC_Date[1] >= PARAM_Date_DBT[1]) && (PC_Date[1] <= PARAM_Date_FIN[1]))
&& ((PC_Date[0] >= PARAM_Date_DBT[0]) && (PC_Date[0] <= PARAM_Date_FIN[0]))
&& ((PC_Heure[0] >= PARAM_Heure_DBT[0]) && (PC_Heure[0] <= PARAM_Heure_FIN[0]))
&& ((PC_Heure[1] >= PARAM_Heure_DBT[1]) && (PC_Heure[1] <= PARAM_Heure_FIN[1])))
{
alert ("ACTIVATION");
}
else
{
alert ("DEFAUT");
}
}
function Tests_Alert()
{
/* Tests des horaires PC */
alert("Tableau PC_Date\n\n"+PC_Date[0]+" / "+PC_Date[1]+" / "+PC_Date[2]); // Tests du tableau PC_Date
alert("Tableau PC_Heure\n\n"+PC_Heure[0]+" heures : "+PC_Heure[1]+" minutes"); // Tests du tableau PC_Heure
/* Tests des horaires Paramétrées */
/* DEBUT */
alert("Tableau PARAM_Date_DBT\n\n"+PARAM_Date_DBT[0]+" / "+PARAM_Date_DBT[1]+" / "+PARAM_Date_DBT[2]); // Tests du tableau PARAM_Date_DBT
alert("Tableau PARAM_HEURE_DBT\n\n"+PARAM_Heure_DBT[0]+" heures : "+PARAM_Heure_DBT[1]+" minutes"); // Tests du tableau PARAM_Heure_DBT
/* FIN */
alert("Tableau PARAM_Date_FIN\n\n"+PARAM_Date_FIN[0]+" / "+PARAM_Date_FIN[1]+" / "+PARAM_Date_FIN[2]); // Tests du tableau PARAM_Date_FIN
alert("Tableau PARAM_HEURE_FIN\n\n"+PARAM_Heure_FIN[0]+" heures : "+PARAM_Heure_FIN[1]+" minutes"); // Tests du tableau PARAM_HEURE_FIN
}
function main()
{
debuteTemps(1000);
}
</SCRIPT>
<META content="MSHTML 6.00.2900.2180" name=GENERATOR>
</HEAD>
<BODY bgColor=#ffffff leftMargin=0 topMargin=0 onload="main()" onUnload="clearTimeout(dd)" marginwidth="0" marginheight="0">
<FORM NAME="Temps1">
<p><b><u>Date Actuelle:</u>
<input type="text" name="Temps2" size="12">
</b></p>
<p><b><u>Heure Actuelle:</u> </b>
<input type="text" name="Temps1" size="10">
</p>
</FORM NAME="Temps1">
<hr>
<table width="30%" border="0">
<tr>
<td width="23%">
<div align="left"><u><b>DEBUT:</b></u></div>
</td>
<td width="16%">
<div align="left"><u><i>Date:</i></u></div>
</td>
<td width="61%">
<select name="Jours_DBT" size="1" onChange="document.PARAM_Jours_DBT=this.options[this.selectedIndex].value">
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
/
<select name="Mois_DBT" size="1" onChange="document.PARAM_Mois_DBT=this.options[this.selectedIndex].value">
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
/
<select name="Annees_DBT" size="1" onChange="document.PARAM_Annees_DBT=this.options[this.selectedIndex].value">
<option value="2005">2005</option>
<option value="2006">2006</option>
<option value="2007">2007</option>
<option value="2008">2008</option>
<option value="2009">2009</option>
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
<option value="2015">2015</option>
<option value="2016">2016</option>
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>
<option value="2020">2020</option>
</select>
</td>
</tr>
<tr>
<td width="23%">
<div align="left"><b><u></u></b></div>
</td>
<td width="16%">
<div align="left"><u><i>Heure:</i></u></div>
</td>
<td width="61%">
<select name="Heures_DBT" size="1" onChange="document.PARAM_Heures_DBT=this.options[this.selectedIndex].value">
<option value="00">00</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
</select>
:
<select name="Minutes_DBT" size="1" onChange="document.PARAM_Minutes_DBT=this.options[this.selectedIndex].value">
<option value="00">00</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
<option value="32">32</option>
<option value="33">33</option>
<option value="34">34</option>
<option value="35">35</option>
<option value="36">36</option>
<option value="37">37</option>
<option value="38">38</option>
<option value="39">39</option>
<option value="40">40</option>
<option value="41">41</option>
<option value="42">42</option>
<option value="43">43</option>
<option value="44">44</option>
<option value="45">45</option>
<option value="46">46</option>
<option value="47">47</option>
<option value="48">48</option>
<option value="49">49</option>
<option value="50">50</option>
<option value="51">51</option>
<option value="52">52</option>
<option value="53">53</option>
<option value="54">54</option>
<option value="55">55</option>
<option value="56">56</option>
<option value="57">57</option>
<option value="58">58</option>
<option value="59">59</option>
</select>
</td>
</tr>
</table>
<hr size="0" noshade>
<table width="30%" border="0">
<tr>
<td width="23%">
<div align="left"><u><b>FIN:</b></u></div>
</td>
<td width="15%">
<div align="left"><u><i>Date:</i></u></div>
</td>
<td width="62%">
<select name="Jours_FIN" size="1" onChange="document.PARAM_Jours_FIN=this.options[this.selectedIndex].value">
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
/
<select name="Mois_FIN" size="1" onChange="document.PARAM_Mois_FIN=this.options[this.selectedIndex].value">
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
/
<select name="Annees_FIN" size="1" onChange="document.PARAM_Annees_FIN=this.options[this.selectedIndex].value">
<option value="2005">2005</option>
<option value="2006">2006</option>
<option value="2007">2007</option>
<option value="2008">2008</option>
<option value="2009">2009</option>
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
<option value="2015">2015</option>
<option value="2016">2016</option>
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>
<option value="2020">2020</option>
</select>
</td>
</tr>
<tr>
<td width="23%">
<div align="left"><b><u></u></b></div>
</td>
<td width="15%">
<div align="left"><u><i>Heure:</i></u></div>
</td>
<td width="62%">
<select name="Heures_FIN" size="1" onChange="document.PARAM_Heures_FIN=this.options[this.selectedIndex].value">
<option value="00">00</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
</select>
:
<select name="Minutes_FIN" size="1" onChange="document.PARAM_Minutes_FIN=this.options[this.selectedIndex].value">
<option value="00">00</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
<option value="32">32</option>
<option value="33">33</option>
<option value="34">34</option>
<option value="35">35</option>
<option value="36">36</option>
<option value="37">37</option>
<option value="38">38</option>
<option value="39">39</option>
<option value="40">40</option>
<option value="41">41</option>
<option value="42">42</option>
<option value="43">43</option>
<option value="44">44</option>
<option value="45">45</option>
<option value="46">46</option>
<option value="47">47</option>
<option value="48">48</option>
<option value="49">49</option>
<option value="50">50</option>
<option value="51">51</option>
<option value="52">52</option>
<option value="53">53</option>
<option value="54">54</option>
<option value="55">55</option>
<option value="56">56</option>
<option value="57">57</option>
<option value="58">58</option>
<option value="59">59</option>
</select>
</td>
</tr>
</table>
<hr>
<p>[ <a href="javascript:Declaration_Horaire()">VALIDER</a> ]</p>
</BODY></HTML>
=======================================
=======================================
Nico.
- Activation selon heure (fct° faite mais pb)
- Clé d'activation windows 10 - Guide
- Heure aesthetic - Télécharger - Thèmes & Fonds d'écran
- Telecharger windows 10 gratuit avec clé d'activation - Accueil - Mise à jour
- Mas activation - Accueil - Windows
- 2go internet = combien d'heure - Forum Opérateurs & Réseaux mobiles
46 réponses
- 1
- 2
- 3
Le problème décrit concerne la comparaison entre la date et l'heure du PC et des paramètres horodatés par deux ListBox de début et de fin afin d'afficher ACTIVATION ou DEFAUT. Des réponses proposées tentent de vérifier chaque composante (année, mois, jour, heure, minute) séparément et d'enchaîner les conditions, ce qui complique le code et peut provoquer des incohérences lorsque la date change. Dernièrement, une piste utile consiste à manipuler des instants complets plutôt que des champs séparés, afin d'évaluer directement si l'horodatage PC se situe entre les bornes, y compris les écarts entre jours.
Voila ce que j'ai fait:
valide=true;
if (((valide) && (PC_Date[2] > PARAM_Date_FIN[2])) // Si Année_PC > Année_Param_FIN alors valide=FAUX
|| ((valide) && (PC_Date[1] > PARAM_Date_FIN[1])) // Si Mois_PC > Mois_Param_FIN alors valide=FAUX
|| ((valide) && (PC_Date[0] > PARAM_Date_FIN[0])) // Si Jour_PC > Jour_Param_FIN alors valide=FAUX
|| ((valide) && (PC_Heure[1] > PARAM_Heure_FIN[1])) // Si Heure_PC > Heure_Param_FIN alors valide=FAUX
|| ((valide) && (PC_Heure[0] > PARAM_Heure_FIN[0])) // Si Minute_PC > Minute_Param_FIN alors valide=FAUX
|| ((valide) && (PC_Date[2] < PARAM_Date_DBT[2])) // Si Année_PC < Année_Param_DBT alors valide=FAUX
|| ((valide) && (PC_Date[1] < PARAM_Date_DBT[1])) // Si Mois_PC < Mois_Param_DBT alors valide=FAUX
|| ((valide) && (PC_Date[0] < PARAM_Date_DBT[0])) // Si Jour_PC < Jour_Param_DBT alors valide=FAUX
|| ((valide) && (PC_Heure[1] < PARAM_Heure_DBT[1])) // Si Heure_PC < Heure_Param_DBT alors valide=FAUX
|| ((valide) && (PC_Heure[0] < PARAM_Heure_DBT[0]))) // Si Minute_PC < Minute_Param_DBT alors valide=FAUX
{
valide=false;
return valide;
}
if (valide == true)
{
alert ("ACTIVATION"); // Si valide=VRAI alors on est dans l'intervalle voulu: ==>> ACTIVATION
}
else
{
alert ("DEFAUT");
}
Sinon, voila mes déclarations:
var cf=document.forms[0]; date=new Date(); /* Déclaration des tableaux */ PC_Date=new Array (3); PC_Heure=new Array (2); PARAM_Date_DBT=new Array (3); PARAM_Heure_DBT=new Array (2); PARAM_Date_FIN=new Array (3); PARAM_Heure_FIN=new Array (2); /* Récupération des horaires PC */ PC_Date[0]=PC_Jours=date.getDate(); PC_Date[1]=PC_Mois=(date.getMonth()+1); PC_Date[2]=PC_Annees=date.getFullYear(); PC_Heure[0]=PC_Heures=date.getHours(); PC_Heure[1]=PC_Minutes=date.getMinutes(); /* Récupération des horaires Paramétrées */ /* Paramétrage Horaires de DEBUT */ PARAM_Date_DBT[0]=PARAM_Jours_DBT=Jours_DBT.value; PARAM_Date_DBT[1]=PARAM_Mois_DBT=Mois_DBT.value; PARAM_Date_DBT[2]=PARAM_Annees_DBT=Annees_DBT.value; PARAM_Heure_DBT[0]=PARAM_Heures_DBT=Heures_DBT.value; PARAM_Heure_DBT[1]=PARAM_Minutes_DBT=Minutes_DBT.value; /* Paramétrage Horaires de FIN */ PARAM_Date_FIN[0]=PARAM_Jours_FIN=Jours_FIN.value; PARAM_Date_FIN[1]=PARAM_Mois_FIN=Mois_FIN.value; PARAM_Date_FIN[2]=PARAM_Annees_FIN=Annees_FIN.value; PARAM_Heure_FIN[0]=PARAM_Heures_FIN=Heures_FIN.value; PARAM_Heure_FIN[1]=PARAM_Minutes_FIN=Minutes_FIN.value;
le principe est de donner une priorite aux valeurs selon l'importance du champs (heure<jour<mois<annee)
valide=vrai si (valide) et (monAnnee>finAnnee) alors valide=faux si (valide) et (monMois>finMois) alors valide=faux si (valide) et (monJour>finJour) alors valide=faux si (valide) et (monHeure>finHeure) alors valide=faux si (valide) et (monAnnee<debAnnee) alors valide=faux si (valide) et (monMois<debMois) alors valide=faux si (valide) et (monJour<debJour) alors valide=faux si (valide) et (monHeure<debHeure) alors valide=faux
à la fin si (valide=vrai) donc tu es dans l'interval désiré
De la forme:
if
{
if
{
if
{
}
}
}
ou pluto de la forme:
if
{
}
if
{
}
if
{
}
if
{
}
Et est-ce que je peux toujours mettre <= ou >= ou est-ce que c'est strictement < ou >?
Normalement, je pense pouvoir gardé la possibilité d'égalité. En tout cas, çà me serai nécessaire dans le cas présent.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
if( ....){
truc = false;
}
else if( ....){
truc = false;
}
else if( ..... ){
truc = false;
}
...
Cela évite de refaire les autre test, si jamais ta valeur devient fausse des le premier test, et donc moins de calculs...
Il meme encore mieux d'écrire comme cela :
truc = true; if( ( .....) || (.....) || (....) ..... || (....) ) truc = false; return truc;
Moins on en fait, et mieux on se porte...
++
Le résultat est le même que précédemment.
Voila mon code:
valide=true;
if ((valide) && (PC_Date[2] > PARAM_Date_FIN[2])) {valide=false;} // Si Année_PC > Année_Param_FIN alors valide=FAUX
if ((valide) && (PC_Date[1] > PARAM_Date_FIN[1])) {valide=false;} // Si Mois_PC > Mois_Param_FIN alors valide=FAUX
if ((valide) && (PC_Date[0] > PARAM_Date_FIN[0])) {valide=false;} // Si Jour_PC > Jour_Param_FIN alors valide=FAUX
if ((valide) && (PC_Heure[1] > PARAM_Heure_FIN[1])) {valide=false;} // Si Heure_PC > Heure_Param_FIN alors valide=FAUX
if ((valide) && (PC_Heure[0] > PARAM_Heure_FIN[0])) {valide=false;} // Si Minute_PC > Minute_Param_FIN alors valide=FAUX
if ((valide) && (PC_Date[2] < PARAM_Date_DBT[2])) {valide=false;} // Si Année_PC < Année_Param_DBT alors valide=FAUX
if ((valide) && (PC_Date[1] < PARAM_Date_DBT[1])) {valide=false;} // Si Mois_PC < Mois_Param_DBT alors valide=FAUX
if ((valide) && (PC_Date[0] < PARAM_Date_DBT[0])) {valide=false;} // Si Jour_PC < Jour_Param_DBT alors valide=FAUX
if ((valide) && (PC_Heure[1] < PARAM_Heure_DBT[1])) {valide=false;} // Si Heure_PC < Heure_Param_DBT alors valide=FAUX
if ((valide) && (PC_Heure[0] < PARAM_Heure_DBT[0])) {valide=false;} // Si Minute_PC < Minute_Param_DBT alors valide=FAUX
if (valide == true)
{
alert ("ACTIVATION"); // Si valide=VRAI alors on est dans l'intervalle voulu: ==>> ACTIVATION
}
else
{
alert ("DEFAUT");
}
Pour le reste... tu dois avoir mal fait un truc qqpart mais je comprend pas ce que tu as fait
++
return valide;fout la m....
Quand, il est là, je n'ai plus mon message DEFAUT.
J'ai essayé une autre structure plutôt similaire mais çà n'arrive toujours pas à gérer la priorité.
Voila le code:
valide=true;
if ((valide) && (PC_Date[2] > PARAM_Date_FIN[2])) {valide=false;}
else if ((valide) && (PC_Date[1] > PARAM_Date_FIN[1])) {valide=false;}
else if ((valide) && (PC_Date[0] > PARAM_Date_FIN[0])) {valide=false;}
else if ((valide) && (PC_Heure[1] > PARAM_Heure_FIN[1])) {valide=false;}
else if ((valide) && (PC_Heure[0] > PARAM_Heure_FIN[0])) {valide=false;}
else if ((valide) && (PC_Date[2] < PARAM_Date_DBT[2])) {valide=false;}
else if ((valide) && (PC_Date[1] < PARAM_Date_DBT[1])) {valide=false;}
else if ((valide) && (PC_Date[0] < PARAM_Date_DBT[0])) {valide=false;}
else if ((valide) && (PC_Heure[1] < PARAM_Heure_DBT[1])) {valide=false;}
else if ((valide) && (PC_Heure[0] < PARAM_Heure_DBT[0])) {valide=false;}
if (valide == true)
{
alert ("ACTIVATION");
}
else
{
alert ("DEFAUT");
}
Mais que faire pour gérer cette satanée priorité sur mes conditions??????????
Je vais faire 2 3 recherches sur le net sur les gestions de priorités et je repasse faire un tour sur le forum des fois que quelqu'un serait plus malin que moi. (chose dont je ne doute aucunement) Vous êtes trop fort quand même. C'est çà les passionnés.
allez, MERCI.
a++
var valide = true;
if ( (PC_Date[2] > PARAM_Date_FIN[2])
|| (PC_Date[1] > PARAM_Date_FIN[1])
|| (PC_Date[0] > PARAM_Date_FIN[0])
|| (PC_Heure[1] > PARAM_Heure_FIN[1])
|| (PC_Heure[0] > PARAM_Heure_FIN[0])
|| (PC_Date[2] < PARAM_Date_DBT[2])
|| (PC_Date[1] < PARAM_Date_DBT[1])
|| (PC_Date[0] < PARAM_Date_DBT[0])
|| (PC_Heure[1] < PARAM_Heure_DBT[1])
|| (PC_Heure[0] < PARAM_Heure_DBT[0]) )
valide=false;
if(valide == true)
alert("engagement");
else
alert("rien du tout");
Voilà, la c'est tout de suite mieux, plus propre et plus compréhensible comme code. Mais je ne dis pas que ca regle ton pb. Soit tu as mis de mauvais tests, soit ca vient d'avant (initialisation et remplissage de tes tableaux de données.
++
Je pense vraiment que c'est un soucis de priorité dans mes conditions. Ce que l'on à fait jusqu'à maintenant revien exactement à ce que j'avais déjà fait mais écrit sous une autre forme.
Cela dit, çà m'a inspiré. Ce qu'il faudrait, ce serait testé l'année, le mois , le jour ,l'heure puis les minutes.
Supposons les paramètres suivants:
Si la date de FIN est supérieure à celle de DEBUT alors l'heure (minutes y compris) de FIN peut être < à l'heure de DEBUT.
Je ne sais pas si tu situes bien le problème mais en tout cas, j'en suis persuadé, çà doit vraiment venir de mes conditions.
pas de ELSE! comme j'ai fait dans mon post n°1.
valide=true; if ((valide) && (...) ) valide=false; if ((valide) && (...) ) valide=false; return (valide);
l'ordre des IF a une importance, tu commence par l'annee puis mois ....
Je vous fait part du code si çà vous dit de le décortiquer.
Là, je fais une comparaison entre les dates de début et les dates de fin (idem avec l'heure)
/* Comparaison Date Début */
if (PC_Date[2] > PARAM_Date_DBT[2])
{
comp_annee_DBT = 1;
}
else comp_annee_DBT = 0;
if (PC_Date[1] > PARAM_Date_DBT[1])
{
comp_mois_DBT = 1;
}
else comp_mois_DBT = 0;
if (PC_Date[0] > PARAM_Date_DBT[0])
{
comp_jour_DBT = 1;
}
else comp_jour_DBT = 0;
Comp_Date_DBT = comp_annee_DBT + comp_mois_DBT + comp_jour_DBT;
if (Comp_Date_DBT != 0)
{
Date_DBT = 1;
}
else Date_DBT = 0;
/* Comparaison Date Fin */
if (PC_Date[2] < PARAM_Date_FIN[2])
{
comp_annee_FIN = 1;
}
else comp_annee_FIN = 0;
if (PC_Date[1] < PARAM_Date_FIN[1])
{
comp_mois_FIN = 1;
}
else comp_mois_FIN = 0;
if (PC_Date[0] < PARAM_Date_FIN[0])
{
comp_jour_FIN = 1;
}
else comp_jour_FIN = 0;
Comp_Date_FIN = comp_annee_FIN + comp_mois_FIN + comp_jour_FIN;
if (Comp_Date_FIN != 0)
{
Date_FIN = 1;
}
else Date_FIN = 0;
/* Comparaison Heure Début */
if (PC_Heure[1] > PARAM_Heure_DBT[1])
{
comp_heure_DBT = 1;
}
else comp_heure_DBT = 0;
if (PC_Heure[0] > PARAM_Heure_DBT[0])
{
comp_minute_DBT = 1;
}
else comp_minute_DBT = 0;
Comp_Heure_DBT = comp_heure_DBT + comp_minute_DBT;
if (Comp_Heure_DBT != 0)
{
Heure_DBT = 1;
}
else Heure_DBT = 0;
/* Comparaison Heure FIN */
if (PC_Heure[1] < PARAM_Heure_FIN[1])
{
comp_heure_FIN = 1;
}
else comp_heure_FIN = 0;
if (PC_Heure[0] < PARAM_Heure_FIN[0])
{
comp_minute_FIN = 1;
}
else comp_minute_FIN = 0;
Comp_Heure_FIN = comp_heure_FIN + comp_minute_FIN;
if (Comp_Heure_FIN != 0)
{
Heure_FIN = 1;
}
else Heure_FIN = 0;
Ca, c'est le test:
if (Date_FIN > Date_DBT)
{
alert ("ACTIVATION:\n\nDate_FIN > Date_DBT");
}
else if (Date_FIN = Date_DBT)
{
if (Heure_Fin > Heure_DBT)
{
alert ("ACTIVATION:\n\nDate_FIN = Date_DBT\nHeure_Fin > Heure_DBT");
}
else
{
alert ("DEFAUT:\n\nDate_FIN = Date_DBT\nHeure_Fin > Heure_DBT");
}
}
else
{
alert ("DEFAUT:\n\nDate_FIN > Date_DBT");
}
Evidemment, çà ne marche pas encore mais je pense que çà ressemble un peu plus au chemin à suivre.
Si çà vous inspire, faites moi part de vos impressions. Il est normal que vous ne comprenez pas tout. Vous êtes pas dans ma tête pour savoir ce que je cherche à faire et j'ai parfois un peu de mal à m'exprimer.
Nico
Si la date FIN est > à la date DBT, l'heure FIN peut être < ou >. Et l'ACTIVATION est donc OK. C'est l'un des points qui m'intéressait.
PROBLEME à régler:
Il suffit que l'un des éléments de la date FIN soit > à l'un des éléments de la date DBT pour avoir activation. (ex.: Si le jour FIN est > au jour DBT, il se fout du mois et ACTIVATION)
Si la date Fin = date DBT, que l'heure FIN soit > ou < à l'heure DBT il n'y a pas d'activation.
voila, je vais continuer à regarder çà
Est-ce que ca ca irai ? :
si ( jour > jour_deb ) alors si ( mois >= mois_deb ) alors si ( annee >= annee_deb ) alors truc = true; sinon truc = false; fsi sinon si ( annee > annee_deb ) alors truc = true; sinon truc = false; fsi fsi sinon si ( jour == jour_deb ) alors si ( mois > mois_deb ) alors si ( annee >= annee_deb ) alors truc = true; sinon truc = false; fsi sinon si ( mois <= mois_deb ) alors si ( annee > annee_deb ) alors truc = true; sinon truc = false; fsi fsi sinon si ( mois > mois_deb ) alors si ( annee >= annee_deb ) alors truc = true; sinon truc = false; fsi sinon si ( annee > annee_deb ) alors truc = true; sinon truc = false; fsi fsi fsi
Voilà, c'est un algo tres lourd mais qui peut marcher, cependant je n'ai pas intégré l'heure car trop long et pas que ca a faire.
LA solution serait plutot de transformer tes deux date en secondes et comparer les résultat !
C'est tout de suite plus simple et plus rapide... si c'est bien ca que tu veux !
++
mais la proposition de "kij_82" est excellente!
tu pourra utiliser la formule (c'est pas trop exact de point de vu logique, mais ça fonctionne tres bien):
instant_debut=((((((annee_debut*12)+mois_debut)*31+jours_debut)*24+heure_debut)*60+minute_debut)*60+seconde_debut) instant_fin=((((((annee_fin*12)+mois_fin)*31+jours_fin)*24+heure_fin)*60+minute_fin)*60+seconde_fin) instant_systeme=((((((annee_systeme*12)+mois_systeme)*31+jours_systeme)*24+heure_systeme)*60+minute_systeme)*60+seconde_systeme) valide=(instant_systeme>instant_debut) && (instant_systeme<instant_fin)
- 1
- 2
- 3