Bonjour à tous,
Un script LUA m'a bien pris la tête car j'avais une comparaison de date qui ne marchait pas, du genre :
local date_du_jour = os.date("%d/%m/%Y")
if date_du_jour >= uservariables['date_limite']
then (...)
Ma variable date_limite est une date prédéfinie au format DD/MM/YYYY.
J'ai finalement remarqué que ça ne comparait que le jour sans tenir compte du mois ni de l'année.
Donc, y a-t-il un moyen de faire simple avec une fonction toute faite ou bien faut-il faire une série de comparaison de l'année, puis du mois, puis du jour ? Ça me paraît bien lourd à mettre en place, mais bon, je le ferai si je n'ai pas le choix.
Merci !
Comment comparer deux dates ?
Comment comparer deux dates ?
Synology DS415play / RFXCom / récepteurs 433 / sondes temp+hygro Oregon / cartes relais Sainsmart
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Comment comparer deux dates ?
salut,
inspire toi de ceci
inspire toi de ceci
Code : Tout sélectionner
function timedifference(d)
s = otherdevices_lastupdate[d]
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t1 = os.time()
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = os.difftime (t1, t2)
return difference
end
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: Comment comparer deux dates ?
Merci vil1driver, mais comment s'en servir ?
Dois-je faire quelque chose du genre :
if date_du_jour >= timedifference(uservariables['date_limite'])
Dois-je faire quelque chose du genre :
if date_du_jour >= timedifference(uservariables['date_limite'])
Synology DS415play / RFXCom / récepteurs 433 / sondes temp+hygro Oregon / cartes relais Sainsmart
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Comment comparer deux dates ?
je la refais..
la fonction renvoie le nombre de secondes qui séparent la date de la variable et maintenant
si la date est passée, la valeur retournée sera négative.
la fonction renvoie le nombre de secondes qui séparent la date de la variable et maintenant
si la date est passée, la valeur retournée sera négative.
Code : Tout sélectionner
function timedifference(s)
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
t1 = os.time()
t2 = os.time{year=year, month=month, day=day, hour=00, min=00, sec=00}
difference = os.difftime (t1, t2)
return difference
end
commandArray = {}
if (timedifference(uservariables['date_limite']) < 0) then
-- blablabal ..
end
return commandArray
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: Comment comparer deux dates ?
Ca marche nickel, merci (encore une fois) !
J'avais mal estimé l'erreur en réalité.
Il faut effectivement la fonction entière telle que tu l'as décrite, et non directement utiliser la commande os.difftime(t2,t1) car des variables utilisateur configurées comme des dates sont finalement considérées comme des strings.
Merci beaucoup !
Problème résolu.
J'avais mal estimé l'erreur en réalité.
Il faut effectivement la fonction entière telle que tu l'as décrite, et non directement utiliser la commande os.difftime(t2,t1) car des variables utilisateur configurées comme des dates sont finalement considérées comme des strings.
Merci beaucoup !
Problème résolu.
Synology DS415play / RFXCom / récepteurs 433 / sondes temp+hygro Oregon / cartes relais Sainsmart
Re: Comment comparer deux dates ?
Bonjour,
désolé je suis néophyte et je ne comprend pas votre solution.
Comme vous, je cherche à exécuter une fonction si la date est dépassée. J'ai donc ce code :
--------------------------------------------------
-- DEFINITION DES VARIABLES LOCALES / RACCOURCIS
--------------------------------------------------
local speed = 0.03
local sleep = gma.sleep;
local cmd = gma.cmd;
local fbk = gma.feedback;
local date_limite ={2017,04,23}
local BlindEdit, timedifference;
timedifference = function (s)
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
t1 = os.time()
t2 = os.time{year=year, month=month, day=day}
difference = os.difftime (t1, t2)
return difference
end
BlindEdit = function{}
if (timedifference(uservariables['date_limite']) < 0) then
cmd('blindedit on');
end
return BlindEditl;
Mais cela ne marche et je ne trouve pas de solution.
Cordialement
désolé je suis néophyte et je ne comprend pas votre solution.
Comme vous, je cherche à exécuter une fonction si la date est dépassée. J'ai donc ce code :
--------------------------------------------------
-- DEFINITION DES VARIABLES LOCALES / RACCOURCIS
--------------------------------------------------
local speed = 0.03
local sleep = gma.sleep;
local cmd = gma.cmd;
local fbk = gma.feedback;
local date_limite ={2017,04,23}
local BlindEdit, timedifference;
timedifference = function (s)
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
t1 = os.time()
t2 = os.time{year=year, month=month, day=day}
difference = os.difftime (t1, t2)
return difference
end
BlindEdit = function{}
if (timedifference(uservariables['date_limite']) < 0) then
cmd('blindedit on');
end
return BlindEditl;
Mais cela ne marche et je ne trouve pas de solution.
Cordialement