您的规范并不完全清楚。我想下面的脚本可能会有所帮助。诀窍是将您的日期转换为时间值,如 所返回的那样os.time
,可以将其作为简单的数字进行比较。
为此,您首先必须解析日期的字符串形式,然后将它们转换为适合输入的表格形式os.time
。请注意,增加这些表的字段(表示日期及其组件拆分)已经处理了时间算术,即指定一个day
值为例如的字段32
将在转换为时间值时正确换行到下个月。
当您到达目标日期时,您将时间值转换回您需要使用的格式的日期值os.date
。
local TARGET_DATE = "03/05/2012"
-- get the two dates from the command line of this lua script
local date1 = arg[1]
local date2 = arg[2]
date1 = "01/01/2012" -- test data - remove in actual script
date2 = "02/01/2012" -- test data - remove in actual script
-- parse the dates (assuming the format day/month/year)
local d1, m1, y1 = string.match( date1, '^(%d%d)/(%d%d)/(%d%d%d%d)$' )
local d2, m2, y2 = string.match( date2, '^(%d%d)/(%d%d)/(%d%d%d%d)$' )
local td, tm, ty = string.match( TARGET_DATE, '^(%d%d)/(%d%d)/(%d%d%d%d)$' )
print( d1, m1, y1 ) -- debug
print( d2, m2, y2 ) -- debug
print( td, tm, ty ) -- debug
date1_tbl = { day = d1, month = m1, year = y1 }
date2_tbl = { day = d2, month = m2, year = y2 }
local time1 = os.time( date1_tbl )
local time2 = os.time( date2_tbl )
local target_time = os.time { day = td, month = tm, year = ty }
-- loop until both dates exceed target date
while time1 < target_time or time2 < target_time do
date1_tbl.day = date1_tbl.day + 14
date2_tbl.day = date2_tbl.day + 14
time1 = os.time( date1_tbl )
time2 = os.time( date2_tbl )
end
-- rebuild new dates
local newdate1 = os.date( "%d/%m/%Y", time1 )
local newdate2 = os.date( "%d/%m/%Y", time2 )
print( newdate1 ) -- debug
print( newdate2 ) -- debug