Bonjour,
je recherche comment faire un fonction javascript qui retourne un unixtime du dernier jour ouvré du mois courant.
Merci beaucoup de votre aide...
Bonjour,
je recherche comment faire un fonction javascript qui retourne un unixtime du dernier jour ouvré du mois courant.
Merci beaucoup de votre aide...
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
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 ...
Merci beaucoup, ca devrait beaucoup m'aider.
Bonne journée.
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 !
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.
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 ?
Bovino a toujours de bons conseils
Si c'est bon pour toi, mets le tag "résolu".
@+
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")
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
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; }
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 ...
ok, ca voudrai dire quelque chose du genre dateTest.setYear(dateTest.getYear()); ??
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/
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager