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
bebarth
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: