Я новичок в 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)