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 :

variable Date et test sur dimanche


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2008
    Messages : 72
    Points : 108
    Points
    108
    Par défaut variable Date et test sur dimanche
    Bonjour à tout le forum
    dans un programme je voudrais rentrer tous les jours fériés de 2013
    sous forme jj/mm/aaaa et tester ensuite le jour si il correspond a un dimanche
    dans ce cas il n'y a pas de sorties envisagées
    ex : 14/07/2013 tombe un dimance
    est ce possible
    merci

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Salut !

    Oui, c'est possible, grâce à l'objet Date et sa méthode getDay :
    Code console : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> now = new Date()
    Date {Sun Dec 30 2012 12:41:57 GMT+0100}
    >>> now.getDay()
    0
    getDay renvoie 0 pour dimanche, 1 pour lundi, 2 pour mardi… Et 6 pour samedi.

    Le piège, c'est la façon dont JavaScript transforme les chaînes de caractères en objets Date : il utilise la notation anglophone, qui met les mois avant les jours. Par exemple :
    Code console : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> new Date("02/01/2013")
    Date {Fri Feb 01 2013 00:00:00 GMT+0100}
    Voilà que le 02/01/2013 tombe un 1er février. Ils sont fous ces anglais

    Encore pire :
    Code console : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> new Date("14/07/2013")
    Date {Fri Feb 07 2014 00:00:00 GMT+0100}
    En toute bonne foi, je m'attendais à un message d'erreur du style « date invalide » expliquant qu'il n'y a pas 14 mois dans une année. Au lieu de ça, JavaScript tente sans rien dire à personne de corriger le problème… Voilà que les 14 mois défilent, et on se retrouve en 2014. Diable, le temps passe vite

    Si ça peut t'aider, voici une petite fonction pour transformer une date représentée de façon raisonnable et logique (comprendre : en notation francophone) en une date hasardeuse et tordue comme ils les aiment outre-manche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function stupidDate( str ){
    	return str.replace(/(\d{2})\/(\d{2})\/(\d{4})/, "$2/$1/$3");
    }

  3. #3
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Tu peux aussi utiliser une librairie de gestion des dates qui te simplifiera considérablement la tâche comme moment.js : http://momentjs.com/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var weekDayNumber = moment("14/07/2013","DD/MM/YYYY").day(); // == 0 : dimanche
     
    moment.weekdays[weekDayNumber] // == "Sunday" ou "Dimanche" si tu mets la locale FR

  4. #4
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2008
    Messages : 72
    Points : 108
    Points
    108
    Par défaut
    bonjour à vous
    je vais etudier vos propositions
    mais je ne voudrais que cela devienne une usine a gaz
    si ca coince je ferai les modifs manuellement
    merci de votre aide

  5. #5
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    une petite astuce sur les dates

    on peut utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new Date(Year, Mount, Day);
    mais il faut faire attention à cette notation.
    les mois commencent à 0 et les jours à 1
    ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    new Date(2013, 0, 1); // 01/01/2013
    new Date(2013, 0, 0); // 31/12/2012 <= attention 2012
    new Date(2013, 1, 1); // 01/02/2013
    new Date(2013, 2, 0); // 28/02/2013 <= le jour 0 du mois de mars 2 est le dernier de février
    new Date(2013, 0, 75); // 16/03/2013 <= le 75e jour de l'année
    new Date(2013, 1, 15 + 56); // 12/04/2013 le 56e jour apres le 15 février
    new Date(2013, 1, 15 - 56); //21/12/2012 56 jour avant le 15 février
    new Date(2013, 7 - 17, 3 - 6); // 26/02/2012 17 mois et 6 jours avant le 03/08/2013
    Outre le fait que les mois commence à 0 utiliser des entier plutôt qu'une chaine est un moyen très pratique de faire des calculs sur les dates

    A+JYT

Discussions similaires

  1. [XL-2007] petit test sur dates alimentées par variable tableau
    Par casefayere dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/02/2012, 11h21
  2. Test sur une date
    Par Treuze dans le forum Access
    Réponses: 5
    Dernier message: 13/08/2006, 14h10
  3. Mon test sur la date ne marche pas
    Par dachir dans le forum Access
    Réponses: 7
    Dernier message: 12/08/2006, 10h23
  4. test sur variable
    Par vince2005 dans le forum Langage
    Réponses: 5
    Dernier message: 18/07/2006, 13h19
  5. [Dates] Test sur un champ de formulaire
    Par rdams dans le forum Langage
    Réponses: 4
    Dernier message: 15/09/2005, 16h03

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