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 :

date de la veille et du lendemain


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 268
    Points : 128
    Points
    128
    Par défaut date de la veille et du lendemain
    Bonjour à tous,

    Je travaille sur un module de réservation. Je cherche à me passer des fonctions mktime de php au maximum car ça pompe pas mal de ressources ... tant qu'a faire, je préfère que ça pompe côté client ...
    J'aimerai pouvoir envoyer la date de la veille ou lendemain à une requête Ajax. Le soucis, c'est les format de date. Côté php, j'attend une date de la forme yyy-mm-dd mais je n'arrive pas à la passer correctement avec JS ...
    mais ça bug je ne comprends pas ...

    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
     
              $(".jour_precedent").click(function(){
    			var date = $(".jour_en_cours").attr("id");
     
    			var reg = new RegExp("[-]+", "g");
    			var tableau = date.split(reg);
     
    			var year = tableau['0'];
    			var month = tableau['1'];
    			var day = tableau['2'];
     
    			var yesterday = new Date();
    			yesterday.setFullYear(year);
    			yesterday.setMonth(month);
    			yesterday.setDate(day-1);
     
     
    			$.ajax({
    			   type: "POST",
    			   url: "affiche-planning.php",
    			   data: "date=" + yesterday.getFullYear() + "-" + yesterday.getMonth() + "-" + yesterday.getDay(),
    			   success: process,
    			   dataType: "html"
    			 });
    			 return false;
    		});

    Si quelqu'un a une idée ...

  2. #2
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    salut

    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
     
              $(".jour_precedent").click(function(){
    			var date = $(".jour_en_cours").attr("id");
     
    			var reg = new RegExp("[-]+", "g");
    			var tableau = date.split(reg);
     
    			var year = tableau['0']; // les ' sont complètement
    			var month = tableau['1']; // inutiles pour l'indice
    			var day = tableau['2']; //
     
    			var yesterday = new Date();
    			yesterday.setFullYear(year);
    			yesterday.setMonth(month); // janvier = 0, décembre = 11, donc month-1
    			yesterday.setDate(day-1);
     
     
    			$.ajax({
    			   type: "POST",
    			   url: "affiche-planning.php",
    			   data: "date=" + 
                                 yesterday.getFullYear() + 
                                 "-" + 
                                 yesterday.getMonth() + // 0 à 11, donc +1 si tu veux de 1 à 12
                                 "-" + yesterday.getDay(),
    			   success: process,
    			   dataType: "html"
    			 });
    			 return false;
    		});
    ce serait infiniment utile si tu expliquait en quoi "ça bug"

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 268
    Points : 128
    Points
    128
    Par défaut
    Désolé ...

    Pour la date d'aujourd'hui, si je clique sur <div class="jour_precedent"></div>,
    je récupére 2008-12-02 en entré du script, mais quand je fais un alert en sortie j'obtiens le 2018-01-04 ....

    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
    $(".jour_precedent").click(function(){
    			var date = $(".jour_en_cours").attr("id");
    			var reg = new RegExp("[-]+", "g");
    			var tableau = date.split(reg);
    			var year = tableau[0];
    			var month = tableau[1];
    			var day = tableau[2];
                            // OK
    			var yesterday = new Date();
    			yesterday.setFullYear(year);
    			yesterday.setMonth(month+1);
    			yesterday.setDate(day-1);
    			month = yesterday.getMonth();
    			year = yesterday.getFullYear();
    			day = yesterday.getDay();
    			// PLUS OK  : year=2018, month=01, day = 04
     
     
     
    			$.ajax({
    			   type: "POST",
    			   url: "affiche-planning.php",
    			   data: "date=" + year + "-" + month + "-" + day,
    			   success: process,
    			   dataType: "html"
    			 });
    			 return false;
    		});

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Ce n'est pad getDay(), mais getDate(). Ensuite les mois sont numérotés de 0 à 11 :
    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
    var date = '2008-12-01';
    var tableau = date.split('-');
    var year = tableau[0];
    var month = parseInt(tableau[1], 10) - 1;
    var day = parseInt(tableau[2], 10);
     
    var yesterday = new Date(year, month, day - 1);
    var mois = ((yesterday.getMonth() + 1) < 10) ? '0' + (yesterday.getMonth() + 1) : yesterday.getMonth() + 1;
    var jour = ((yesterday.getDate()) < 10) ? '0' + yesterday.getDate() : yesterday.getDate();
    var hier = yesterday.getFullYear() + '-' + mois + '-' + jour;
     
    var tomorrow = new Date(year, month, day + 1);
    var mois = ((tomorrow.getMonth() + 1) < 10) ? '0' + (tomorrow.getMonth() + 1) : yesterday.getMonth() + 1;
    var jour = ((tomorrow.getDate()) < 10) ? '0' + tomorrow.getDate() : tomorrow.getDate();
    var demain = tomorrow.getFullYear() + '-' + mois + '-' + jour;
     
    alert('aujourdhui => ' + date + '\n' + 'hier => ' + hier + '\n' + 'demain => ' + demain);

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 268
    Points : 128
    Points
    128
    Par défaut
    Ca c'est vrai très très sympa ! Merci beaucoup jeca

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    La même en plus propre :
    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
          function mefDate(laDate)
          {
            var mois = ((laDate.getMonth() + 1) < 10) ? '0' + (laDate.getMonth() + 1) : laDate.getMonth() + 1;
            var jour = ((laDate.getDate()) < 10) ? '0' + laDate.getDate() : laDate.getDate();
            return laDate.getFullYear() + '-' + mois + '-' + jour;
          }
     
          var date = '2008-12-01';
          var tableau = date.split('-');
          var year = tableau[0];
          var month = parseInt(tableau[1], 10) - 1;
          var day = parseInt(tableau[2], 10);
     
          var laDate = new Date(year, month, day - 1);
          yesterday = mefDate(laDate);
     
          var laDate = new Date(year, month, day + 1);
          tomorrow = mefDate(laDate);
     
          alert('aujourdhui => ' + date + '\n' + 'hier => ' + yesterday + '\n' + 'demain => ' + tomorrow);

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 268
    Points : 128
    Points
    128
    Par défaut
    Merci beaucoup, c'est parfait !

    La grosse surprise pour moi sur ce cas, c'est le temps de calcul + affichage (en local). C'est dingue, je me demande si c'est le calcul de la date ou l'appel ajax qui fait lagger le chmilblik, je vais faire des tests pour voir ça de plus près.

    Un grand MERCI jeca ! Bonne après-midi

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

Discussions similaires

  1. récupérer la date de la veille
    Par mromain dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 30/04/2008, 13h06
  2. [Dates] Avoir la date de la veille
    Par mariafan dans le forum Langage
    Réponses: 3
    Dernier message: 06/07/2007, 17h47
  3. La date de la veille
    Par tchoukapi dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 27/04/2007, 11h30
  4. Recuperer la date de la veille
    Par Wisefool dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/09/2005, 15h42
  5. date de la veille
    Par liliprog dans le forum C++
    Réponses: 8
    Dernier message: 13/08/2004, 13h41

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