Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 星期二在卢阿获得爱情_Date_Lua_Calendar - Fatal编程技术网

Date 星期二在卢阿获得爱情

Date 星期二在卢阿获得爱情,date,lua,calendar,Date,Lua,Calendar,我如何从提供的年份中获得Lua的Shrove周二(12/02/2013、04/03/2014、17/02/2015)的日期?如果可能的话,是否可以解释清楚,以便它可以适应复活节、母亲节和其他每年都在变化的节日?网上有一些脚本可以获得复活节,但解释得不太清楚,我也不明白如何在复活节星期二和其他假日更改这些脚本。据报道,复活节星期二正好是复活节星期日前47天。所以关键是如何计算复活节,一个可移动的节日。您可以修改以获得Shrove星期二 function shrove_tuesday(year)

我如何从提供的年份中获得Lua的Shrove周二(
12/02/2013
04/03/2014
17/02/2015
)的日期?如果可能的话,是否可以解释清楚,以便它可以适应复活节、母亲节和其他每年都在变化的节日?网上有一些脚本可以获得复活节,但解释得不太清楚,我也不明白如何在复活节星期二和其他假日更改这些脚本。

据报道,复活节星期二正好是复活节星期日前47天。所以关键是如何计算复活节,一个可移动的节日。您可以修改以获得Shrove星期二

function shrove_tuesday(year)
    local leap_year
    if year % 4 == 0 then 
        if year % 100 == 0 then 
            if year % 400 == 0 then 
                leap_year = true
            else 
                leap_year = false 
            end
        else 
            leap_year = true 
        end
    else 
        leap_year = false
    end
    local a = year % 19
    local b = math.floor(year / 100)
    local c = year % 100
    local d = math.floor(b / 4)
    local e = b % 4
    local f = math.floor((b + 8) / 25) 
    local g = math.floor((b - f + 1) / 3)
    local h = (19 * a + b - d - g + 15) % 30
    local i = math.floor(c / 4)
    local k = c % 4
    local L = (32 + 2 * e + 2 * i - h - k) %7
    local m = math.floor((a + 11 * h + 22 * L) / 451)
    local month = math.floor((h + L - 7 * m + 114 - 47) / 31)
    local day = (h + L - 7 * m + 114 - 47) % 31 + 1
    if month == 2 then    --adjust dates in February 
        day = leap_year and day - 2 or day - 3
    end
    return day, month
end
计算似乎很复杂,这是因为复活节的计算很复杂,这个函数遵循的算法是

测试:

输出:

21      2
12      2
4       3
17      2

您可以轻松地使用
来使用
string.format(“%02d/%02d/%04d”,日、月、年)
或任何您需要的格式获取格式化字符串。

您可以使用
%
而不是
数学.mod
@lh如果您是对的,现在它更干净了,我按照代码计算复活节。@YuHao-
闰年已计算但未使用。二月的调整日期必须取决于闰年。@EgorSkriptunoff你是对的,我错过了,测试不完整,我讨厌二月:(
21      2
12      2
4       3
17      2