abracadabraPDF › Forums › PDF – Général › Calcul heures dans un formulaire PDF › Répondre à : Calcul heures dans un formulaire PDF
3 septembre 2021 à 12:09
#69610

Maître des clés
bonjour,
Pour tout savoir (ou presque) sur les dates, cf. les 2 liens suivants :
https://www.w3schools.com/jsref/jsref_obj_date.asp (en anglais)
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Date (en français)
Voici une explication pour le script de document :
Code:
// Fonction « Time2Num » selon 2 paramètres : le format et le temps
function Time2Num(sFormat, sTime) {
// Sortie de la fonction si sTime== » » donc pas besoin de « else »
if(sTime== » ») return « »;
// Conversion de la date en un objet Date JavaScript selon les règles d’une chaîne de format
var oTime=util.scand(« mm/dd/yyyy « +sFormat, « 01/01/1970 « +sTime);
// Conversion du décalage UTC en millisecondes
var fTZOffset=oTime.getTimezoneOffset()*1000*60;
// Temps depuis le début de la journée en millisecondes
var fTime=oTime.valueOf()-fTZOffset;
// Conversion en secondes et renvoi de la valeur
return Math.round(fTime/1000);
}
function Time2Num(sFormat, sTime) {
// Sortie de la fonction si sTime== » » donc pas besoin de « else »
if(sTime== » ») return « »;
// Conversion de la date en un objet Date JavaScript selon les règles d’une chaîne de format
var oTime=util.scand(« mm/dd/yyyy « +sFormat, « 01/01/1970 « +sTime);
// Conversion du décalage UTC en millisecondes
var fTZOffset=oTime.getTimezoneOffset()*1000*60;
// Temps depuis le début de la journée en millisecondes
var fTime=oTime.valueOf()-fTZOffset;
// Conversion en secondes et renvoi de la valeur
return Math.round(fTime/1000);
}
Le script de calcul était déjà commenté dans le fichier exemple :
Code:
event.value= » »;
// Somme
var somme=Time2Num(« hh:mm », this.getField(« TimeTotal.0 »).value)+Time2Num(« hh:mm », this.getField(« TimeTotal.1 »).value);
// Conversion arrondie en minutes
var enminutes=Math.round(somme/60);
// Heures
var heures=Math.floor(enminutes/60);
// Minutes
var minutes=((enminutes/60)-heures)*60;
// Format des Minutes avec zéro
var min=util.printf(« %,302.0f », minutes);
// Construction de la chaîne d »affichage
event.value=heures+ »: »+min;
// Somme
var somme=Time2Num(« hh:mm », this.getField(« TimeTotal.0 »).value)+Time2Num(« hh:mm », this.getField(« TimeTotal.1 »).value);
// Conversion arrondie en minutes
var enminutes=Math.round(somme/60);
// Heures
var heures=Math.floor(enminutes/60);
// Minutes
var minutes=((enminutes/60)-heures)*60;
// Format des Minutes avec zéro
var min=util.printf(« %,302.0f », minutes);
// Construction de la chaîne d »affichage
event.value=heures+ »: »+min;
@+
:bonjour: