我在PHP手册页面上找到了以下函数来计算东正教复活节日期(来源:http://www.php.net/manual/en/function.easter-date.php)。
function easterOrthodox_date($year) {
$a = $year % 4;
$b = $year % 7;
$c = $year % 19;
$d = (19 * $c + 15) % 30;
$e = (2 * $a + 4 * $b - $d + 34) % 7;
$month = floor(($d + $e + 114) / 31);
$day = (($d + $e + 114) % 31) + 1;
$de = mktime(0, 0, 0, $month, $day + 13, $year);
return $de;
}
我使用以下行来获取特定年份的这个日期(selYear
):
$EasterOrth = date('Y-m-d', easterOrthodox_date($selYear));
当我在我的页面上回显结果时,这看起来是正确的,并显示2014-04-20(这是正确的,因为今年它与天主教复活节的日期相同)。
然而,当我将其用于其他计算时,它会返回错误的结果,例如12月31日。 是否有可能在这种情况下我需要以不同的格式进行格式化以获得格式为yyyy-mm-dd的日期?
更新 上面的变量被传递给SQL中的存储过程,我在其中运行以下Select(较长查询的一部分):
SELECT DATEADD(d, daysFromEaster, @EasterOrth) AS dayX,
category1,
category2,
'' AS validity
FROM DayCheck_Easter
WHERE mode = 'EasterOrth'
这应该只从模式设置为EasterOrth的表中获取项目,似乎问题在于我在这里添加了几天(int)的第一行。 它在其他几个选择中工作正常,但在这里计算错误的日期,这就是为什么我认为我的格式错误,因此它不被识别为日期。
谢谢,迈克。答案 0 :(得分:0)
我发现了这个问题 - 它既不是PHP也不是SQL,而是传递变量的Ajax中的一个错误,这就是SQL无法正确读取的原因。
再次感谢所有帮助 - 它指出了我正确的方向。