DateTime: Le temps, ajouter et soustraire des temps, feuille de temps |
Author(s) Robin Stoddart-Stones |
|
--- Soumis par Robin Stoddart-Stones ---
Le temps, ajouter et soustraire des temps, feuille de temps.
On peut se demander "Comment additionner des
temps", "Convertir en heure et minutes", "Facturer pour plus
de 24 heures" et autres choses intéressantes du genre.
Access97 nous fournit le type de données date_temps qui
possède des propriétés intéressantes.
Utiliser le champ date.
Si vous utiliser le type de données Date_temps, vous pouvez facilement y
capturer la date et l'heure du système, ce qui ouvre la voie à une
application de feuille de temps.
En cliquant sur un bouton, par exemple, on peut capturer le temps dans un
champ ou une variable (de type date). Tous les exemples sont copiés depuis la
fenêtre immédiate (Debug Window) d'Access 97.
Ainsi:
Dim lsdt as Date (dans un module) puis, dans la fenêtre d'exécution
immédiate
lsdt=Date + Time
? lsdt= 17/02/99 17:10:49. (au moment de la saisie)
Un champ date-temps peut être soustrait d'un autre pour
obtenir le résultat comme une fraction de jour:
Ainsi:
lsdt=#16:00#-#15:45#
?lsdt
1.04166666666666E-02
? (24*60)*1.04166666666666E-02
14.9999999999999 (ie approx 15 minutes au n/1000ths de seconde)
soit, simplement soustraire les deux temps pour obtenir la réponse arithmétique. On peut ajouter ces laps de temps ensemble pour faire un total.
?1.04166666666666E-02 +1.04166666666666E-02
2.08333333333332E-02
?(24*60)*2.08333333333332E-02
29.9999999999998 (Suffisamment près de 30 minutes, même si vous
facturez comme un avocat!)
Si le résultat est en deçà de la barre des 24 heures,
vous pouvez facilement utiliser un format pour faciliter la lecture, genre format (x,"Short Time")
Ainsi:
?format(2.08333333333332E-02,"short time")
00:30
ce qui est utile pour fins de facturation.
Si votre taux horaire est de £11.50, alors, par jour, il
est de24*11.50 et vous chargerez, pour 30 minutes de travail:
?24*11.50 * 2.08333333333332E-02
5.74999999999996
Il est donc aisé d'emmagasiner le temps dans un champ, de soustraire deux
champs pour obtenir un laps de temps, d'utiliser un format pour facilement
lire le résultat, et un petit calcul fournit le coût, si moins de 24 heures
furent travaillées.
"Aah! Mais" vous entends-je, "nous travaillons plus de 24
heures".
For simple, si vous ajoutez de petits incréments. Ici, je passe de 47
demi-heures à 49:
?47*2.08333333333332E-02
0.97916666666666
?24* 0.97916666666666
23.4999999999998 (ie 47 demi-heures, c'est 23.5 h)
?48*2.08333333333332E-02
0.999999999999994
?24*0.999999999999994
23.9999999999999 (24 h)
?49*2.08333333333332E-02
1.02083333333333
?24*1.02083333333333
24.4999999999999 (24.5 h)
maintenant, si je calcule des durées (Gérance de projet?), on peut
obtenir la fin du projet en ajoutant la durée à la date de départ:
lsdt=#01-dec-99#
?lsdt
01/12/99
lsdt=lsdt+1.02083333333333
?lsdt
02/12/99 00:30:00
Entre d'autres mots, à minuit, le minuit entre le 30/nov/99 et le 01-Dec-99,
on ajoute 24.5h, on obtient 00:30 le deux décembre.
Le seul problème c'est qu'il n'y a pas de format simple pour des période
de plus de 24 heures.
?format(1.02083333333333,"short Time")
00:30
mais c'est facile de se rendre compte que la valeur est supérieure à un
(1.00). Il est également facile de calculer la portion excédant 24heures.
lsdt=1.020833333333
days=Int(lsdt)
?days
1
Hours=24*(lsdt-days)
?hours
0.499999999991999
minutes=(hours-int(hours))*60
?minutes
29.99999999952
et si vous travaillez passé minuit
?#02-dec-99 00:30# - #01-dec-99 00:00#
1.02083333333576
ce qui est suffisamment précis pour moi, à ce stage, la différence
étant mineure entre ce calcul et le calcul de 49 demi-heures, 1.0208333333.
Inversant le processus:
Si vous entrez des heures et des minutes, dans votre feuille de temps, alors
minutes =mins/(24*60)
Hours=hrs/24
time=hours + minutes
?#07:30#-#00:00#
0.3125
minutes=30/(24*60)
hours=7/24
?hours+minutes
0.3125
et ainsi, ajouter des intervalles de temps devient facile!
|