用lua实现万年历
日历一般以月份来展示,实现万年历重点是要取得每个月份的显示数据。
而只要知道要显示的第一天,就可以获得整个月份的数据。
代码如下:
--万年历 local UNIT = 60 * 60 * 24 local COUNT = 6 * 7 local Calendar = {} --获取当月显示数据 time:要显示年份月份的任一时间点 count 当月要显示的天数 function Calendar:getData(time, count) count = count or COUNT local tab_time = os.date("*t", time) local year = tab_time.year local month = tab_time.month --当月第一天 local t1 = os.time({year = year, month = month, day = 1, hour = 0}) local tab_t1 = os.date("*t", t1) local wday = tab_t1.wday --1-7 --显示第一天 local t2 if wday == 1 then t2 = t1 - 7 * UNIT else t2 = t1 - (wday - 1) * UNIT end local data = {} for i = 1, count do data[i] = t2 + (i - 1) * UNIT end return data end local data = Calendar:getData(os.time({year=2018,month=4,day=15,hour=0})) for k,v in pairs(data) do print(k,os.date("%Y.%m.%d %H:%M:%S %A %w",v)) end