abracadabraPDF › Forums › PDF – Général › Calcul date à date. – RÉSOLU
- Ce sujet est vide.
-
CréateurSujet
-
5 août 2013 à 15:26 #44619
jsamica
MembreBonjour,
J’ai regardé les posts et à priori pas simple.
Je souhaite calculer un ombre de jour à partir de deux dates.
Par exemple, une date d’entrée et la date actuelle me calcul l’ancienneté.Est-ce possible ?
Merci.:bonjour:
-
CréateurSujet
-
AuteurRéponses
-
5 août 2013 à 16:41 #55485
Stubiana
MembreBonjour,
Pour être précis, tu aurais simplement besoin du nombre de jours ? Ou aussi des heures minutes secondes ?
Une petite fonction au cas où, elle renvoie le nombre de jours entiers écoulés entre 2 dates.
function diffdate(d1, d2)
{
var jour = Math.abs(d1.getTime() – d2.getTime());
return Math.floor(jour/(1000*60*60*24));
}Cordialement :bonjour:
6 août 2013 à 13:18 #55486jsamica
MembreBonjour Stubiana,
Merci, simplement un nombre années/jours entre les 2 dates
Par contre, as-tu un exemple concret; s’il te plaît.
Je comprend pas trop comment tu l’implémentes dans ton formulaire.Tu l’ajoutes dans un champs à script de calcul personnalisé ?
Tu définis avant tes variables d1 et d2 genre :
d1 = this.getField(« date1 »).value;Merci pour ces précisions.
:bonjour:6 août 2013 à 15:11 #55487Stubiana
MembreMerci, simplement un nombre années/jours entre les 2 dates
La fonction calcule simplement le nombre de jours mais pas le nombre d’années (il suffit de diviser le nombre de jours par 365 pour avoir le nombre d’années)
Par contre, as-tu un exemple concret; s’il te plaît.
Je comprend pas trop comment tu l’implémentes dans ton formulaire.Tu l’ajoutes dans un champs à script de calcul personnalisé ?
Tu définis avant tes variables d1 et d2 genre :
d1 = this.getField(« date1 »).value;Tout dépend de l’utilisation que tu vas faire de cette fonction.
Le mieux est de l’ajouter aux scripts du document, comme ça tu pourras l’utiliser simplement en l’appelant, depuis n’importe quel champ.Bien sur il faut définir les paramètres que tu vas passer à ta fonction. Prenons un exemple :
Tu as un champ « Date d’arrivée », et tu souhaiterais connaitre l’ancienneté de la personne, qui sera affichée dans un autre champ appelé « Ancienneté ».
On suppose au départ que « Date d’arrivée » est vide, donc « Ancienneté » l’est aussi.
Lorsque l’utilisateur entrera une date dans le champ « Date d’arrivée », « Ancienneté » sera mis à jour.Il te suffit donc d’ajouter ce script d’action dans le champ « Date d’arrivée » sur l’action « Champ désactivé » :
if (event.target.value != « »)
{
this.getField(« Ancienneté »).value = diffdate(event.target.value, new Date());
}
else
{
this.getField(« Ancienneté »).value = « »;
}De cette façon, lorsque l’utilisateur entrera une date et passera au champ suivant, « Ancienneté » sera mis à jour :Smiley01:
:fleche: Attention : « Date d’arrivée » doit être au format Date, sinon ça ne marchera pas.
J’espère être assez clair :siffle:
Cordialement :bonjour:
7 août 2013 à 08:36 #55488jsamica
MembreBonjour Stubiana
Mille merci
Tu as tapé juste c’est exactement mon besoin à quelques différences prés.Par contre je comprend pas comment marche ton script :doute: cf exemple 1
Le deuxième exemple correspond exactement à mon besoin de calcul d’une dirrérence de 2 dates vers le champs ancienneté en nombre d’année et jours
Merci encore
:bonjour:[attachment deleted by admin]
7 août 2013 à 15:10 #55489Stubiana
MembreC’est simplement dû à une petite erreur de ma part, essaye avec ça dans l’exemple 2 :
if (event.target.value != « »)
{
var date_depart = util.scand(« dd/mm/yyyy », event.target.value);
var date_arrivee = util.scand(« dd/mm/yyyy »,this.getField(« datearrivee »).value);
this.getField(« anciennete »).value = diffdate(date_depart, date_arrivee);
}
else
{
this.getField(« anciennete »).value = « »;
}Cordialement :bonjour:
7 août 2013 à 15:45 #55490jsamica
MembreMerci encore
Je pense qu’on s’approche du but mais sa ne marche toujours pas. :oh:
Ci joint l’exemple 2 avec ton script, il me semble avoir suivi tes instructions.
:Smiley03:
[attachment deleted by admin]
7 août 2013 à 16:20 #55491Stubiana
MembreC’est à cause de « datearrivee » :Smiley05:
Des fois tu as écris « datearrivee » et des fois « datearrive » :geek:
Cordialement :bonjour:
8 août 2013 à 12:13 #55492jsamica
MembreSalut Stubiana,
Effectivement mais même après la correction, ça ne marche pas
:mur:Qu’est ce que je fais mal ? :joker:
Merci encore pour ton aide
:bonjour:[attachment deleted by admin]
8 août 2013 à 15:02 #55493Stubiana
MembreTu as simplement oublié d’insérer la fonction diffdate aux scripts du document (Outils > javascript > Scripts Javascript du document) :Smiley03:
Code:function diffdate(d1, d2)
{
var jour = Math.abs(d1.getTime() – d2.getTime());
return Math.floor(jour/(1000*60*60*24));
}Cordialement :bonjour:
8 août 2013 à 15:18 #55494jsamica
Membreoui effectivement ça marche beaucoup mieux.
Super :bravo:
Merci:bonjour:
15 août 2013 à 17:02 #55495djamel227
MembreVous allez svp essayer avec celui là,
Il est super !:geek: :geek: :geek:
[attachment deleted by admin]
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.
