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 :

Fonction pour retourner le dernier jour ouvré du mois


Sujet :

JavaScript

  1. #1
    En attente de confirmation mail
    Inscrit en
    Octobre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 127
    Points : 112
    Points
    112
    Par défaut Fonction pour retourner le dernier jour ouvré du mois
    Bonjour,
    je recherche comment faire un fonction javascript qui retourne un unixtime du dernier jour ouvré du mois courant.
    Merci beaucoup de votre aide...

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    date("t",mktime(0,0,0,date("m"),date("d"),date("Y"))) te donera par exemple le nombre de jour du mois courant.

    Tu peux ensuite faire une boucle qui utilise date("w") (0 (pour dimanche) à 6 (pour samedi))

    en partant de la fin pour trouver ceux ou date("w") != 0 || 6

    Bonne journée

    oups : pardon j'ai encore réagi en PHPeur

    Certainement des fonctions similaires en javascript

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    oui mais là on est coté javascript ...

    je ne pense pas que ce soit possible coté js ...
    a mon avis il va falloir ajaxer pour appeler une fonction cote serveur ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    En attente de confirmation mail
    Inscrit en
    Octobre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 127
    Points : 112
    Points
    112
    Par défaut
    Merci beaucoup, ca devrait beaucoup m'aider.
    Bonne journée.

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Eventuellement, une petite astuce :
    • Tu fixes ta date avec le mois désiré.
    • Tu fixes sur cette date le jour 31.
    • Tu vérifies si le mois de ta date a changé.
    • Si c'est le cas, c'est que le mois choisi ne comportait pas 31 jours.
    • Toujours si le mois a changé, tu recommences en décrémentant le jour jusqu'à ce que le mois ne chage pas.
    • Lorsque le mois n'a pas changé, tu es sur le dernier jour du mois, tu vérifies s'il s'agit d'un dimanche ou d'un samedi.
    • Tu agis soit en continuant à décrémenter le jour du mois, soit en utilisant le résultat précédent pour retirer un jour ou deux pour tomber sur le dernier vendredi !

    Désolé, pas trop le temps de montrer un exemple.

    ASTUCE :
    C'est à ma connaissance la meilleure et la plus simple des manières pour tester la validité d'une date :
    On récupère la date entrée, on crée une nouvelle date avec celle-ci, si la date a changé, c'est que la première n'est pas valide.
    Cette astuce se base sur le fait que pour javascript, le 31 mars par exemple correspond au 1er avril !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    En attente de confirmation mail
    Inscrit en
    Octobre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 127
    Points : 112
    Points
    112
    Par défaut
    Merci beaucoup c'est exactement ce qu'il me fallait.
    Je fini de coder et je met mon code en solution.
    Encore merci. Très bonne astuce.

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    j'emets des doutes sur le resultat ...

    Si le dernier vendredi du mois est férié ???

    C'est pour cela que je disais qu'à mon avis javascript ne sait pas faire ...
    je penses parcontre que php doit avoir accès à un véritable calendrier ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    Bovino a toujours de bons conseils

    Si c'est bon pour toi, mets le tag "résolu".

    @+

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    ha tiens,

    j'avais pas pensé aux jours fériés...

    Je pense pas que PHP connaisse les jours fériés (en france ou ailleurs ?)

    Par contre il serait possible de fournir un array avec ces dates (en date "z" par exemple) et de faire une comparaison (in_array())

    PS: il faut aussi penser aux années bissextiles (date"L")

  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Alexdezark Voir le message
    il faut aussi penser aux années bissextiles (date"L")
    La solution que j'ai fournie prend en compte les années bissextiles ! (Voir dans les contributions) en revanche, pour les jours fériés, ce n'est effectivement pas toujours simple !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  11. #11
    En attente de confirmation mail
    Inscrit en
    Octobre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 127
    Points : 112
    Points
    112
    Par défaut
    En fait je ne me soucis pas des jours fériers, donc pour moi ca va tout à fait comme fonction. Maintenant c'est sure qu'elle sera beaucoup plus performante avec la gestion des jours fériés en plus

  12. #12
    En attente de confirmation mail
    Inscrit en
    Octobre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 127
    Points : 112
    Points
    112
    Par défaut
    voilà, ca ne doit pas être super bien optimisé mais ca marche Encore merci.


    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 setLastDay(obj){
    	var date = new Date();
    	var jour = 31;
    	var lastDay = false;
    	var month = date.getMonth() + 1;
    	//on se place sur le dernier jour du mois
    	while(lastDay == false){
    		var dateTest = new Date();
    		dateTest.setDate(jour);
    		var month2 = dateTest.getMonth() + 1;
    		if(month2 != month){ //on a pas encore atteint le dernier jour
    			jour = jour - 1;
    		}
    		else {lastDay = true;}
    	}
    	var day = dateTest.getDay();
    	if(day == 6){ //on est samedi
    		dateTest.setDate(jour - 1);
    	}
    	if(day == 0){ //on est dimanche
    		dateTest.setDate(jour - 2);
    	}
    	alert(dateTest);
    	//on ecrit la date au format xx/xx/xxxx dans un champs text.
    	obj.value = (dateTest.getDate() < 10) ? '0' + dateTest.getDate() : dateTest.getDate();
    	var month = dateTest.getMonth() + 1;
    	obj.value += (month < 10) ? '/0' + month: '/' + month;
    	var year = dateTest.getFullYear();
    	obj.value += '/' + year;
    }

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Juste un détail mais qui as toute sont importance ...

    Lorsque l'on fait des set sur les dates, il faut TOUJOURS commencer par setYear puis setMonth puis setDate...
    Sinon javascript se perd dans les années bissextiles, les mois entre 28 et 31 jours ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  14. #14
    En attente de confirmation mail
    Inscrit en
    Octobre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 127
    Points : 112
    Points
    112
    Par défaut
    ok, ca voudrai dire quelque chose du genre dateTest.setYear(dateTest.getYear()); ??

  15. #15
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Non ça veut juste dire quil faut setter la date en commençant par l'année ...

    ce n'est qu'une fois la date entière settée que le test sera vraiment exact

    voir ceci :
    http://www.developpez.net/forums/d39...fication-date/
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. Créer une fonction pour le max de jours d'un mois..
    Par kim mading dans le forum WinDev
    Réponses: 4
    Dernier message: 05/10/2012, 13h51
  2. Réponses: 8
    Dernier message: 19/10/2011, 19h03
  3. [calcul] dernier jour ouvré du mois
    Par xolias dans le forum Oracle
    Réponses: 5
    Dernier message: 26/02/2008, 16h26
  4. Réponses: 2
    Dernier message: 16/12/2006, 12h34
  5. Fonction qui compte le nombre de jours ouvrés par mois
    Par griese dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/07/2006, 15h32

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