⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 easter.c

📁 又一款WEB游戏原代码Bk_Sources_RPG?忠豢頦EB游戏原代码Bk_Sources_RPG
💻 C
字号:
/*   +----------------------------------------------------------------------+   | PHP HTML Embedded Scripting Language Version 3.0                     |   +----------------------------------------------------------------------+   | Copyright (c) 1997-9 PHP Development Team (See Credits file)         |   +----------------------------------------------------------------------+   | This program is free software; you can redistribute it and/or modify |   | it under the terms of one of the following licenses:                 |   |                                                                      |   |  A) the GNU General Public License as published by the Free Software |   |     Foundation; either version 2 of the License, or (at your option) |   |     any later version.                                               |   |                                                                      |   |  B) the PHP License as published by the PHP Development Team and     |   |     included in the distribution in the file: LICENSE                |   |                                                                      |   | This program is distributed in the hope that it will be useful,      |   | but WITHOUT ANY WARRANTY; without even the implied warranty of       |   | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        |   | GNU General Public License for more details.                         |   |                                                                      |   | You should have received a copy of both licenses referred to here.   |   | If you did not, or have any questions about PHP licensing, please    |   | contact core@php.net.                                                |   +----------------------------------------------------------------------+   | Authors: Colin Viebrock <cmv@easydns.com>                            |   +----------------------------------------------------------------------+ */#include "sdncal.h"#include <time.h>static void _cal_easter(INTERNAL_FUNCTION_PARAMETERS, int gm){	/* based on code by Simon Kershaw, <webmaster@ely.anglican.org> */	pval *year_arg;	struct tm *ta, te;	time_t the_time;	int year, golden, solar, lunar, pfm, dom, tmp, easter;	switch(ARG_COUNT(ht)) {	case 0:		the_time = time(NULL);		ta = localtime(&the_time);		year = ta->tm_year + 1900;		break;	case 1:		if (getParameters(ht, 1, &year_arg) == FAILURE) {			WRONG_PARAM_COUNT;		}		convert_to_long(year_arg);		year = year_arg->value.lval;		break;	default:		WRONG_PARAM_COUNT;	}	if (gm && (year<1970 || year>2037)) {				/* out of range for timestamps */		php3_error(E_WARNING, "easter_date() is only valid for years between 1970 and 2037 inclusive");		RETURN_FALSE;	}	golden = (year % 19) + 1;					/* the Golden number */	if ( year <= 1752 ) {						/* JULIAN CALENDAR */		dom = (year + (year/4) + 5) % 7;			/* the "Dominical number" - finding a Sunday */		if (dom < 0) {			dom += 7;		}		pfm = (3 - (11*golden) - 7) % 30;			/* uncorrected date of the Paschal full moon */		if (pfm < 0) {			pfm += 30;		}	} else {							/* GREGORIAN CALENDAR */		dom = (year + (year/4) - (year/100) + (year/400)) % 7;	/* the "Domincal number" */		if (dom < 0) {			dom += 7;		}		solar = (year-1600)/100 - (year-1600)/400;		/* the solar and lunar corrections */		lunar = (((year-1400) / 100) * 8) / 25;		pfm = (3 - (11*golden) + solar - lunar) % 30;		/* uncorrected date of the Paschal full moon */		if (pfm < 0) {			pfm += 30;		}	}	if ((pfm == 29) || (pfm == 28 && golden > 11)) {		/* corrected date of the Paschal full moon */		pfm--;							/* - days after 21st March                 */	}	tmp = (4-pfm-dom) % 7;	if (tmp < 0) {		tmp += 7;	}	easter = pfm + tmp + 1;	    					/* Easter as the number of days after 21st March */	if (gm) {							/* return a timestamp */		te.tm_isdst = -1;		te.tm_year = year-1900;		te.tm_sec = 0;		te.tm_min = 0;		te.tm_hour = 0;		if (easter < 11) {			te.tm_mon = 2;			/* March */			te.tm_mday = easter+21;		} else {			te.tm_mon = 3;			/* April */			te.tm_mday = easter-10;		}	        return_value->value.lval = mktime(&te);	} else {							/* return the days after March 21 */		        return_value->value.lval = easter;	}        return_value->type = IS_LONG;}/* {{{ proto int easter_date([int year])   Return the timestamp of midnight on Easter of a given year (defaults to current year) */void cal_easter_date(INTERNAL_FUNCTION_PARAMETERS){	_cal_easter(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);}/* }}} *//* {{{ proto int easter_days([int year])   Return the number of days after March 21 that Easter falls on for a given year (defaults to current year) */void cal_easter_days(INTERNAL_FUNCTION_PARAMETERS){	_cal_easter(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);}/* }}} *//* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -