一.公元后的:
天干:甲4 乙5 丙6 丁7 戊8 己9 庚0 辛1 壬2 癸3
如1894年末尾一个数是4就甲年,依此类推
地支:子4 丑5 寅6 卯7 辰8 巳9 午10 未11 申0 酉1 戌2 亥3
换算:1894除以12,余数是几,就在地支中找几.
二.公元前的:
天干:甲7 乙6 丙5 丁4 戊3 己2 庚1 辛0 壬9 癸8
如公元前7年就是甲年依此类推
地支:子-9 丑-8 寅-7 卯-6 辰-5 巳-4 午-3 未-2 申-1 酉0 戌-11 亥-10
换算:如公元前221年,-221除以12,余数是几,就在地支中找几
一、天干地支算法
方法1:
$TGDZ = array (
array ('甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸' ),
array ('子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥' )
);
$Year = 2014;
$Year_JiSuan = $Year - 1900 + 36;
$TianGanDiZhi = $TGDZ[0][$Year_JiSuan % 10] . $TGDZ[1][$Year_JiSuan % 12];
echo $Year."年为农历[".$TianGanDiZhi."]年";
方法2:
$TGDZ = array (array ('庚', '辛', '壬', '癸' ,'甲', '乙', '丙', '丁', '戊', '己'),
array ( '申', '酉', '戌', '亥', '子', '丑', '寅', '卯', '辰', '巳', '午', '未') );
for ($Year = 1900; $Year <= 2099; $Year++) {
$TianGanDiZhi = $TGDZ[0][$Year % 10] . $TGDZ[1][$Year % 12];
echo $Year . "年为农历[" . $TianGanDiZhi . "]年
";
}
二、计算生肖:
方法1:
if($_POST['year']){
$y = $_POST['year'];
$sxdict = array('猴', '鸡', '狗', '猪','鼠', '牛', '虎', '兔', '龙', '蛇', '马', '羊');
$result['sx'] = $sxdict[$y%12];
var_dump($result['sx']);
}
方法2:
if($_POST['year']){
$y = $_POST['year'];
$sxdict = array('鼠', '牛', '虎', '兔', '龙', '蛇', '马', '羊', '猴', '鸡', '狗', '猪');
$result['sx'] = $sxdict[(($y-4)%12)];
var_dump($result['sx']);
}
方法3:
/**
* 计算.生肖
*
* @param int $year 年份
* @return str
*/
function get_animal($year){
$animals = array(
'鼠', '牛', '虎', '兔', '龙', '蛇',
'马', '羊', '猴', '鸡', '狗', '猪'
);
$key = ($year - 1900) % 12;
return $animals[$key];
}
echo get_animal(1990); // 马
echo get_animal(2010); // 虎
三、计算星座:
方法1:
/*
* 计算星座的函数 string get_zodiac_sign(string month, string day)
* 输入:月份,日期
* 输出:星座名称或者错误信息
*/
function get_zodiac_sign($month, $day)
{
// 检查参数有效性
if ($month < 1 || $month > 12 || $day < 1 || $day > 31)
return (false);
// 星座名称以及开始日期
$signs = array(
array( "20" => "宝瓶座"),
array( "19" => "双鱼座"),
array( "21" => "白羊座"),
array( "20" => "金牛座"),
array( "21" => "双子座"),
array( "22" => "巨蟹座"),
array( "23" => "狮子座"),
array( "23" => "处女座"),
array( "23" => "天秤座"),
array( "24" => "天蝎座"),
array( "22" => "射手座"),
array( "22" => "摩羯座")
);
list($sign_start, $sign_name) = each($signs[(int)$month-1]);
if ($day < $sign_start)
list($sign_start, $sign_name) = each($signs[($month -2 < 0) ? $month = 11: $month -= 2]);
return $sign_name;
}//函数结束
?>
方法2:
/**
* 计算.星座
*
* @param int $month 月份
* @param int $day 日期
* @return str
*/
function get_constellation($month, $day){
$signs = array(
array('20'=>'宝瓶座'), array('19'=>'双鱼座'),
array('21'=>'白羊座'), array('20'=>'金牛座'),
array('21'=>'双子座'), array('22'=>'巨蟹座'),
array('23'=>'狮子座'), array('23'=>'处女座'),
array('23'=>'天秤座'), array('24'=>'天蝎座'),
array('22'=>'射手座'), array('22'=>'摩羯座')
);
$key = (int)$month - 1;
list($startSign, $signName) = each($signs[$key]);
if( $day < $startSign ){
$key = $month - 2 < 0 ? $month = 11 : $month -= 2;
list($startSign, $signName) = each($signs[$key]);
}
return $signName;
}
echo get_constellation(12, 11); // 射手座
echo get_constellation(6, 6); // 双子座
方法3:
/**
* 计算.星座
*
* @param int $month 月份
* @param int $date 年份
* @return str
*/
function get_constellation($month, $date){
$constellations = array(
'水瓶座', '双鱼座', '白羊座', '金牛座', '双子座', '巨蟹座',
'狮子座', '处女座', '天秤座', '天蝎座', '射手座', '摩羯座'
);
if( $date <= 22 ){
if( 1 != $month ){
$constellation = $constellations[$month - 2];
}else{
$constellation = $constellations[11];
}
}else{
$constellation = $constellations[$month - 1];
}
return $constellation;
}
echo get_constellation(12, 11); // 射手座
echo get_constellation(6, 6); // 双子座