Идентификация PHI - PullRequest
       59

Идентификация PHI

0 голосов
/ 24 сентября 2019

Я новичок в LUA и использую его для изменения даты рождения людей, которым не менее 90 лет.

Примечание: эти данные имеют тип VARCHAR, CHAR и т. Д. (НеDATETIME тип данных) .

Для этого я пытаюсь сложить / вычесть (в зависимости от месяца рождения) 2 месяца, а также сложить / вычесть (в зависимости от дня месяца) 5дней, так что ...

  • Пр.31.01.1930 -> 26.03.1930 (прибавить 2 месяца, вычесть 5 дней)

  • Отл.12/01/1930 -> 10/06/1930 (вычесть 2 месяца, добавить 5 дней)

День конвертации работает отлично , но Преобразование месяца продолжает сбой . LUA будет только добавлять 2 месяца, а не вычитать .

Таким образом, значение месяца 01 преобразуется в 03, а значение 05 преобразуется в 07 (оба являются хорошими / действительными / ожидаемыми), а значение месяца 07 преобразуется в 09 (следует преобразовать в 05) и даже 11 преобразуется в13 и 12 преобразуются в 14 (вместо преобразования в 09 и 10 соответственно).

Так чего мне не хватает?

Вот код:

-- Conversion Logic
if sYear <= s90Year then
    if sOldMonth <= sCurrentMonth then 
        -- month is less than or equal to current month
        if sOldMonth <= tostring(6) then
            sNewMonth = sOldMonth + 2
        else
            sNewMonth = sOldMonth - 2
        end
        if sOldDay <= sCurrentDay then
            -- day is less than or equal to current day
            if sOldDay <= tostring(15) then
                sNewDay = sOldDay + 5
            else
                sNewDay = sOldDay - 5
            end                 
        else
            -- day is greater than current day
            if sOldDay <= tostring(15) then
                sNewDay = sOldDay + 5
            else
                sNewDay = sOldDay - 5
            end                 
        end
    else
        -- month is greater than current month
        if sOldMonth <= tostring(6) then
            sNewMonth = sOldMonth + 2
        else
            sNewMonth = sOldMonth - 2
        end             
        if sOldDay <= sCurrentDay then
            -- day is less than or equal to current day
            if sOldDay <= tostring(15) then
                sNewDay = sOldDay + 5
            else
                sNewDay = sOldDay - 5
            end                 
        else
            -- day is greater than current day
            if sOldDay <= tostring(15) then
                sNewDay = sOldDay + 5
            else
                sNewDay = sOldDay - 5
            end                 
        end             
    end

    if string.len(sNewMonth) == 1 then
        sNewMonth = tostring("0" .. sNewMonth)
    end
    if string.len(sNewDay) == 1 then
        sNewDay = tostring("0" .. sNewDay)
    end
    sNewDOB = tostring(sYear .. sNewMonth .. sNewDay)
...