IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Condition que la date du jour se trouve entre deux dates


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut Condition que la date du jour se trouve entre deux dates
    Bonsoir a tous,

    Je ne suis pas trés doué en JS mais j'essaie de creer un script qui me donne une image en fonction de la date du jour qui serait ou pas dans un intervalle de dates.

    Explication :

    Je suis en train d'adapter un script qui fait tomber de la neige, sur mon écran, ou tout autre image :

    Script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    snow_no = 10;
    if (typeof(window.pageYOffset) == "number")
    {
    	snow_browser_width = window.innerWidth;
    	snow_browser_height = window.innerHeight;
    } 
    else if (document.body && (document.body.scrollLeft || document.body.scrollTop))
    {
    	snow_browser_width = document.body.offsetWidth;
    	snow_browser_height = document.body.offsetHeight;
    }
    else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop))
    {
    	snow_browser_width = document.documentElement.offsetWidth;
    	snow_browser_height = document.documentElement.offsetHeight;
    }
    else
    {
    	snow_browser_width = 100;
    	snow_browser_height = 100;	
    }
     
    snow_dx = [];
    snow_xp = [];
    snow_yp = [];
    snow_am = [];
    snow_stx = [];
    snow_sty = [];
     
    for (i = 0; i < snow_no; i++) 
    { 
    	snow_dx[i] = 0; 
    	snow_xp[i] = Math.random()*(snow_browser_width-50);
    	snow_yp[i] = Math.random()*snow_browser_height;
    	snow_am[i] = Math.random()*20; 
    	snow_stx[i] = 0.02 + Math.random()/10;
    	snow_sty[i] = 0.7 + Math.random();
    	if (i > 0) document.write("<\div id=\"snow_flake"+ i +"\" style=\"position:absolute;z-index:"+i+"\"><\img src=\""+snow_img+"\" border=\"0\"><\/div>"); else document.write("<\div id=\"snow_flake0\" style=\"position:absolute;z-index:0\"><\img src=\""+snow_img+"\" border=\"0\"><\/div>");
    }
     
    function SnowStart() 
    { 
    	for (i = 0; i < snow_no; i++) 
    	{ 
    		snow_yp[i] += snow_sty[i];
    		if (snow_yp[i] > snow_browser_height-50) 
    		{
    			snow_xp[i] = Math.random()*(snow_browser_width-snow_am[i]-30);
    			snow_yp[i] = 0;
    			snow_stx[i] = 0.02 + Math.random()/10;
    			snow_sty[i] = 0.7 + Math.random();
    		}
    		snow_dx[i] += snow_stx[i];
    		document.getElementById("snow_flake"+i).style.top=snow_yp[i]+"px";
    		document.getElementById("snow_flake"+i).style.left=snow_xp[i] + snow_am[i]*Math.sin(snow_dx[i])+"px";
    	}
    	snow_time = setTimeout("SnowStart()", 10);
    }
    SnowStart();
    L'image de base est celle-ci : snow_img = "http://www.iobnet.com/extranet/images/halloween.png";


    Hors j'aimerai adapter ce code en fonction de plusieurs intervalles de date afin de proposer une autre photo durant la periode de noel, celle de paques, etc...

    J'essaie de m'inspirer de ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    function tombeImage(dateDebut,dateFin) {
    	if ((dateDebut != "") && (dateFin != "")) {
    	var debutJour = dateDebut.substring(0,dateDebut.indexOf("/"));
    	var debutMois = dateDebut.substring(dateDebut.indexOf("/")+1,dateDebut.length)-1;
    	var finJour = dateFin.substring(0,dateFin.indexOf("/"));
    	var finMois = dateFin.substring(dateFin.indexOf("/")+1,dateFin.length)-1;
    	var date = new Date();
    	var annee = date.getFullYear();
    	var dateDebut = new Date(annee,debutMois,debutJour)
    	var dateFin = new Date(annee,finMois,finJour)
    	var dateFin = dateFin.setDate(dateFin.getDate() +1)
     
    		if(debutMois > finMois) {
    			temp1 = new Date(annee,11,31,23,59);
    			temp2 = new Date(annee,0,1);
    			if ((date.getTime() <= temp1.getTime()) && (date.getTime() >=dateDebut.getTime())) {
    				initImages();
    			}
    			if ((date.getTime() >= temp2.getTime()) && (date.getTime() < dateFin)) {
    				initImages();
    			}
    		}
    		if (debutMois <= finMois) {
    			if ((date.getTime() > dateDebut.getTime()) && (date.getTime() < dateFin)) {
    			initImages();
    		}
    	}
    	}
    }
    ..................
    Le but étant de dire :
    si date du jour est entre le 29/10 et le 01/04 l'image de ref est http://xxxx/hallowween.jpg
    si date du jour est entre le 23/12 et le 28/12 l'image de ref est http://xxxx/noel.jpg

    Merci pour toute l'aide que vous pourrez m'apporter.

    Bonne soirée

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Je ne sais pas si ça peut aider.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <script>
    function dateSSAAMMJ(aDate)
    {
     var now = aDate == null ? new Date() : new Date(aDate);
     var annee   = now.getFullYear();
     var mois    = (now.getMonth()+1).toString().length == 1 ? '0'+(now.getMonth()+1) : (now.getMonth()+1);
     var jour    = (now.getDate()).toString().length == 1 ? '0'+ (now.getDate()) : (now.getDate())
     return (annee+'-'+mois+'-'+jour);
    }
    alert(dateSSAAMMJ('01/01/2017'));
    alert(dateSSAAMMJ(null));
    alert(dateSSAAMMJ('01/31/2017'));
    /* ATTENTION date au format MM/JJ/SSAA */
    if (dateSSAAMMJ('01/01/2017') <= dateSSAAMMJ(null) && dateSSAAMMJ(null) <= dateSSAAMMJ('10/31/2017'))
    {
     alert("date dans l'intervalle");
    }
    /* ATTENTION date au format SSAA-MM-JJ */
    if ('2017-01-01' <= dateSSAAMMJ(null) && dateSSAAMMJ(null) <= '2017-10-31')
    {
     alert("date dans l'intervalle");
    }
    </script>
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Merci beaucoup

    C'est exactement ce qu'il me fallait pour adapter mon code.

    Bonne nuit

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut


    Le format utilisé pour construire une "Date" n'a pas d'importance.

    Les "Object Date" peuvent se manipuler et se comparer comme des nombres ("Number").

    Exemple :

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    let
    	ancDate = new Date( "2017-04-01" ),
    	futurDate = new Date( "01/05/2018" ),
    	date1 = new Date(),
    	date2 = new Date( 2017, 0, 1 ),
    	date3 = new Date( "2018-02-17T15:24:31.258+02:00" );
     
    console.log( "ancDate = ", ancDate.toLocaleString() );
    console.log( "futurDate = ", futurDate.toLocaleString() );
    console.log( "date1 = ", date1.toLocaleString() );
    console.log( "date2 = ", date2.toLocaleString() );
    console.log( "date3 = ", date3.toLocaleString() );
     
    console.log( "*****");
     
    console.log( "différence entre deux date en millisecondes = ", date3 - date1 );
     
    console.log( "*****");
     
    console.log( "date1 > ancDate : ", date1 > ancDate );
    console.log( "date2 > ancDate : ", date2 > ancDate );
    console.log( "date3 > ancDate : ", date3 > ancDate );
     
    console.log( "date1 < futurDate : ", date1 < futurDate );
    console.log( "date2 < futurDate : ", date2 < futurDate );
    console.log( "date3 < futurDate : ", date3 < futurDate );
     
    console.log( "*****");
     
    console.log( "ancDate < date1 < futurDate : ", ( ancDate < date1 ) && ( date1 < futurDate ) );
    console.log( "ancDate < date2 < futurDate : ", ( ancDate < date2 ) && ( date2 < futurDate ) );
    console.log( "ancDate < date3 < futurDate : ", ( ancDate < date3 ) && ( date3 < futurDate ) );

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VxiR2] Calcul du nombre de jours par mois entre deux date
    Par trabelsi dans le forum Designer
    Réponses: 4
    Dernier message: 02/10/2017, 15h17
  2. [AC-2007] Doublons entre deux dates (semaines/jours)
    Par cesidoo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 22/05/2009, 22h04
  3. Réponses: 4
    Dernier message: 21/11/2008, 10h54
  4. Comment compter les jours par mois entre deux dates
    Par Doo89 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 10/01/2008, 21h21
  5. Réponses: 2
    Dernier message: 02/07/2007, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo