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

NodeJS Discussion :

Ajout d'un mois à une date


Sujet :

NodeJS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Février 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2023
    Messages : 2
    Par défaut Ajout d'un mois à une date
    Bonjour,

    J'essaye d'ajouter un mois à une date mais j'ai un fonctionnement étrange pour lequel je n'arrive pas à trouver de solution.

    La date en question est le 2 mars 2023. j'ai recherché des fonctions que je vous liste ci-dessous pour le faire mais elles me renvoient toutes un mois en plus moins une heure ou deux.
    Le résultat devrait être 2023-04-02T00:00:00.000Z mais j'ai à chaque fois 2023-04-01T23:00:00.000Z ou 2023-04-01T22:00:00.000Z

    Ce qui est étrange est que si je prend une date en avril ou mai cela fonctionne.

    Je suis un peu perdu, si quelqu'un arrive à m'éclairer sur un problème qui doit être tout simple ?

    Voici le code ci-dessous :


    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
    function addMonths(date, months) {
      return new Date(date.setMonth(date.getMonth() + months));
    }
     
    function addMonthsToDate(_date,_noOfMonths) 
     {
       var yearFromDate = _date.getFullYear();
       var monthFromYear = _date.getMonth();
       var dayFromYear = _date.getDate();
       var newDate = new Date(yearFromDate, monthFromYear  + _noOfMonths, dayFromYear);
       return newDate;
     }   
     
    function addMonths2(date, months) {
      const dateCopy = new Date(date);
      dateCopy.setMonth(dateCopy.getMonth() + months);
      return dateCopy;
    }
     
    let testDate = new Date("2023-03-02");
    console.log(testDate);
     
    console.log("------");
    console.log(testDate); 
    const result3 = addMonths2(testDate, 1);
    console.log(result3); 
     
    console.log("------");
    console.log(testDate); 
    const result1 = addMonths(testDate,1);
    console.log(result1);
     
    const result2 = addMonthsToDate(testDate,1);
    console.log("------");
    console.log(testDate); 
    console.log(result2);
    Le résultat donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    2023-03-02T00:00:00.000Z
    ------
    2023-03-02T00:00:00.000Z
    2023-04-01T23:00:00.000Z
    ------
    2023-03-02T00:00:00.000Z
    2023-04-01T23:00:00.000Z
    ------
    2023-04-01T23:00:00.000Z
    2023-05-01T22:00:00.000Z

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Salut,


    Chez moi la fonction addMonths2 fonctionne...

  3. #3
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 667
    Par défaut
    ça ressemble à un souci d'heure d'été et de fuseau horaire.
    donc cherchez le réglage du fuseau horaire pour les calculs. et cherchez aussi comment indiquer le fuseau pour l'affichage parce que là il y un "Z" donc c'est le fuseau "UTC + 0".

  4. #4
    Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Février 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2023
    Messages : 2
    Par défaut
    Bonsoir,

    J'ai essayé sur un autre compilateur et cela fonctionne. C'est quand même étrange, mais finalement ça devait peut-être être un bug de ce compilateur (ce problème apparaissait seulement pour quelques dates, pas toutes).
    En tous cas maintenant cela fonctionne donc problème résolu.
    Merci pour votre aide.

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

Discussions similaires

  1. ajouter nombre de mois à une date
    Par minooo dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 18/05/2010, 22h54
  2. ajouter 8 mois à une date
    Par Myfred dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 07/03/2007, 11h35
  3. Requête Access 2003 : Ajouter 6 mois à une date
    Par billy123 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 28/02/2007, 16h26
  4. [Dates] Ajouter un mois à une date
    Par Higestromm dans le forum Langage
    Réponses: 8
    Dernier message: 17/01/2006, 15h27
  5. ajouter 1 mois à une date dans une requete
    Par alain.lc dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 04/04/2005, 12h05

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