Сравнение даты

Kuharz

Известный
Автор темы
401
153
Версия MoonLoader
.026-beta
Есть таблица с датами в формате
Lua:
dates = {
    "22.10.2021",
    "17.08.1995",
    "03.12.2021",
    "28.10.2021",
}
Как сравнить текущую дату, с датами из таблицы и выдать ответ, текущая дата больше/меньше или равна взятой дате из таблицы?

Вообще цель узнать, сегодня другая дата (наступил ли следующий день или прошло несколько дней) или дата та же, что и записана ранее.
Делать через сравнение года, далее месяца, дня, как по мне слишком костыльно и громоздко, вот и хочу узнать, можно ли как-то попроще?
 
Последнее редактирование:
Решение
Lua:
dates = {
    "22.10.2021",
    "17.08.1995",
    "03.12.2024",
    "28.10.2021",
    "23.10.2021"
}
print('today: '..os.date('%d.%m.%Y'))
function check_date(date)
    local today = os.time({day = os.date('%d'), month = os.date('%m'), year = os.date('%Y')})
    local arr = {}
    arr.day, arr.month, arr.year = string.match(date, '(%d*)%.(%d*)%.(%d*)')
    if today < os.time(arr) then return string.format('%s < %s', os.date('%d.%m.%Y'), date)
    elseif today > os.time(arr) then return string.format('%s > %s', os.date('%d.%m.%Y'), date)
    elseif today == os.time(arr) then return string.format('%s == %s', os.date('%d.%m.%Y'), date) end
end
for i, v in ipairs(dates) do
    print(check_date(v))
end
1634948980035.png

Дальше сам...

CaJlaT

Овощ
Модератор
2,805
2,607
Lua:
dates = {
    "22.10.2021",
    "17.08.1995",
    "03.12.2024",
    "28.10.2021",
    "23.10.2021"
}
print('today: '..os.date('%d.%m.%Y'))
function check_date(date)
    local today = os.time({day = os.date('%d'), month = os.date('%m'), year = os.date('%Y')})
    local arr = {}
    arr.day, arr.month, arr.year = string.match(date, '(%d*)%.(%d*)%.(%d*)')
    if today < os.time(arr) then return string.format('%s < %s', os.date('%d.%m.%Y'), date)
    elseif today > os.time(arr) then return string.format('%s > %s', os.date('%d.%m.%Y'), date)
    elseif today == os.time(arr) then return string.format('%s == %s', os.date('%d.%m.%Y'), date) end
end
for i, v in ipairs(dates) do
    print(check_date(v))
end
1634948980035.png

Дальше сам...
 
  • Влюблен
  • Нравится
Реакции: Kuharz и F0RQU1N and

Salvatore_Ferrari

Известный
427
239
Lua:
local dates = {
    "21.11.2025",
    "23.10.2021",
    "28.01.2020",
    "23.05.2021",
    "21.07.2021",
    "23.05.2015",
    "13.06.2021",
    "23.10.2021",
    "23.01.2024"
}

function checkDate(date)
    print("Текущая дата - "..os.date("%d.%m.%Y").."\n")
 local currentDate = os.time({day = os.date("%d"),month = os.date("%m"), year = os.date("%Y")})
 
  for k,v in pairs(date) do
  local dataTable = os.time({day = v:sub(1,2), month = v:sub(4,5) , year = v:sub(7,10)})
 
        if dataTable == currentDate then print(v.." == "..os.date("%d.%m.%Y"))
        elseif dataTable > currentDate then print(v.." > "..os.date("%d.%m.%Y"))
        elseif dataTable < currentDate then print(v.." < "..os.date("%d.%m.%Y"))
   end
  end
 end
 checkDate(dates)
 
Последнее редактирование:
  • Нравится
Реакции: Kuharz