Page 1 sur 2

Soustraction format DATE

Posté : 18 nov. 2016, 11:29
par geronimo
Bonjour,
je voudrais faire une soustraction de 2 dates (2016-10-10), or si je dépasse 49jours d'écart entre les deux dates, le calcul ne marche plus car le format du résultat de l'opération doit etre obligatoirement en format TIME.

TotalDate := sub_date_date (date1, date2);

TotalDate = format Time
date1 = format DATE
date2 = format DATE

Auriez vous une technique pour dépasser cette limite de 49jours du format TIME

Merci

Re: Soustraction format DATE

Posté : 18 nov. 2016, 11:41
par Cyril93
Salut,

La seul méthode c'est d'éclater ton format DATE en années, mois et jours et de remettre l'écart au format INT en nombre de jours. On pourra pas afficher plus de 49jours au format TIME, la résolution du format TIME c'est la milliseconde codé sur 32bit

Re: Soustraction format DATE

Posté : 18 nov. 2016, 12:01
par ProfnovA
essai de passer du format time => DT

Re: Soustraction format DATE

Posté : 18 nov. 2016, 12:21
par geronimo
C'est pareil lorsque l'on passe au format DT, faire une soustraction de 2 DT fonctionne que si on est inférieur à 49 jours

Re: Soustraction format DATE

Posté : 18 nov. 2016, 14:27
par Cyril93
C'est avec quel automate et quel logiciel ?
Ton format DATE c'est en jour/mois/année donc inutile de calculer l’écart entre deux DATE en milliseconde, calculer l'écart en nombre de jour c'est logique tu mets ça dans un INT et tu peux aller jusqu’à 32767 jours
Pourquoi le résultat doit t'il être absolument en TIME ?

Re: Soustraction format DATE

Posté : 18 nov. 2016, 15:37
par geronimo
le but c'était d'enregistrer un événement à un instant et le comparer à la date actuelle pour voir la différence.
Si la différence est supérieure à 86 jours alors on met une alarme.
Du coup j'ai utilisé l'heure de l'automate pour faire l'enregistrement.

Sinon c'est avec un M340 sous unity

Re: Soustraction format DATE

Posté : 18 nov. 2016, 16:20
par Ulairi
Bonjour, tu ne pourrais pas faire ça en deux temps :

Avec un SUB_DT_TIME en mettant pour l'entrée au format TIME la valeur correspondant à 49 jours (T#1172h).

DATE_tampon:=SUB_DT_TIME(date1,Quaranteneufjours);

Avec :
Date_tampon au format DT
Date1 au format DT
Quaranteneufjours au format TIME

Tu compares avec un GT_DT si Date_tampon est supérieure à Date2
si c'est le cas, l'écart est supérieur à 49 jours

Tu repars sur un sub_DT_DT (Date_tampon, date2) pour les 37 jours restants pour ton seuil d'alarme

EDIT : Nécessite de travailler en DATE AND TIME

Re: Soustraction format DATE

Posté : 18 nov. 2016, 18:15
par Ulairi
2016-11-18_1812.png
2016-11-18_1813.png
2016-11-18_1813_001.png

Re: Soustraction format DATE

Posté : 18 nov. 2016, 18:28
par geronimo
Merci de ton aide mais sans vouloir te vexé sa fait un peu "bidouille".
Je voudrais faire un bloc dfb utilisable pour plusieurs projet.

Je voudrais pas qu'il y est de constante, en gros que sa marche tout le temps et apres je gere dans le programme l'alarme en fonction de x jours.

Mais merci en tout cas

Re: Soustraction format DATE

Posté : 18 nov. 2016, 18:31
par Ulairi
Non, non, pas de vexation, je sais bien que c'est de la bidouille, mais en même temps, moi je suis électro et pas automaticien :D