Page 1 sur 1
Comment comparer deux dates ?
Publié : 26 avr. 2015, 14:41
par Nicogluck
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 !
Re: Comment comparer deux dates ?
Publié : 26 avr. 2015, 14:51
par vil1driver
salut,
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
Re: Comment comparer deux dates ?
Publié : 26 avr. 2015, 15:17
par Nicogluck
Merci vil1driver, mais comment s'en servir ?
Dois-je faire quelque chose du genre :
if date_du_jour >= timedifference(uservariables['date_limite'])
Re: Comment comparer deux dates ?
Publié : 26 avr. 2015, 16:18
par vil1driver
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.
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
Re: Comment comparer deux dates ?
Publié : 26 avr. 2015, 17:46
par Nicogluck
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.
Re: Comment comparer deux dates ?
Publié : 25 avr. 2017, 18:34
par Martin
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