Авторизация



plurk

Задай мне вопрос

Голосования

Жопа-Сиськее-Писькее
 

Хороший хостинг

EOMY.NET: бесплатный хостинг без рекламы

ГлавнаяСтатьиLua → lua. как узнать вчерашнюю дату
lua. как узнать вчерашнюю дату E-mail
User Rating: / 0
PoorBest 
Written by xternalx   
Tuesday, 23 February 2010 13:06

По роду деятельности потребовалось узнавать вчерашнюю дату. Т.е. дату, которая была 1 день назад :D

В различного рода фреймворках есть много всяких рюшечек, как это можно узнать, Но у нас не фреймворк, у нас клевая lua. Мы сделаем это сами.

Решение в лоб. Сначала определим таблицу, в которой каждому месяцу будем сопоставлять количество дней:

months = {
        [1] = 31,
        [2] = getDaysInFeb(),
        [3] = 31,
        [4] = 30,
        [5] = 31,
        [6] = 30,
        [7] = 31,
        [8] = 31,
        [9] = 30,
        [10] = 31,
        [11] = 30,
        [12] = 31
}

Обратите внимание, что в феврале заведомо неизвестно количество дней, т.к. год у нас может быть високосным (29 дней), а может быть и не високосным(28 дней)

Реализация метода getDaysInFeb():


function getDaysInFeb()
    -- используется сторонняя библиотека для работы с датой и временем
    local year = date()
    year = year:getyear()
    -- если текущий год кратный 4, но не кратный 100, или кратный 400,
    -- то это високосный год
    if (year%4 == 0 and year%100 ~= 0) or (year%400 == 0) then
        return 29
    else
        return 28
    end
end

Теперь у нас есть все что нужно для дальнейшей работы.

Сам алгоритм определения вчерашней даты такой:

-- <strong>в переменных month, year, day уже заранее установлены соответстующие значения</strong>
-- если вчера было 0-е число, то вчера был не сегодняшний месяц
if (day - 1 <= 0) then
    -- узнаем блять порядковый номер месяца
    -- если текущий месяц 1 или меньше(на всяк случай), то вчера был декабрь
    -- предыдущего года
    if tonumber(month) <= 1 then
        month = 12
        -- если сегодня январь, а вчера быль декабрь, то значт и год вчера был другой
        year = year - 1
        yyear = yyear - 1
    else
        -- нет, не январь, значит просто -1 месяц
        month = month - 1
    end
    -- устанавливаем вчерашнее число, как последнее число вчерашнего месяца
    -- таблица months определена выше
    day = months[month]
else
    -- халява, вчера был сегодняшний месяц
    day = day - 1
end

Удачи :)

Last Updated on Tuesday, 23 February 2010 15:08
 

Add comment


Security code
Refresh