php 农历 类,PHP阳历转农历的类_2prime的博客-程序员宅基地

技术标签: php 农历 类  

/**

* 类:阳历转农历的类

* 编辑:bbs.it-home.org

* /

class Calendar{

var $everyCMonth=array(

0=>array(8,0,0,0,0,0,0,0,0,0,0,0,29,30,7,1),

1=>array(0,29,30,29,29,30,29,30,29,30,30,30,29,0,8,2),

2=>array(0,30,29,30,29,29,30,29,30,29,30,30,30,0,9,3),

3=>array(5,29,30,29,30,29,29,30,29,29,30,30,29,30,10,4),

4=>array(0,30,30,29,30,29,29,30,29,29,30,30,29,0,1,5),

5=>array(0,30,30,29,30,30,29,29,30,29,30,29,30,0,2,6),

6=>array(4,29,30,30,29,30,29,30,29,30,29,30,29,30,3,7),

7=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,4,8),

8=>array(0,30,29,29,30,30,29,30,29,30,30,29,30,0,5,9),

9=>array(2,29,30,29,29,30,29,30,29,30,30,30,29,30,6,10),

10=>array(0,29,30,29,29,30,29,30,29,30,30,30,29,0,7,11),

11=>array(6,30,29,30,29,29,30,29,29,30,30,29,30,30,8,12),

12=>array(0,30,29,30,29,29,30,29,29,30,30,29,30,0,9,1),

13=>array(0,30,30,29,30,29,29,30,29,29,30,29,30,0,10,2),

14=>array(5,30,30,29,30,29,30,29,30,29,30,29,29,30,1,3),

15=>array(0,30,29,30,30,29,30,29,30,29,30,29,30,0,2,4),

16=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,3,5),

17=>array(2,30,29,29,30,29,30,30,29,30,30,29,30,29,4,6),

18=>array(0,30,29,29,30,29,30,29,30,30,29,30,30,0,5,7),

19=>array(7,29,30,29,29,30,29,29,30,30,29,30,30,30,6,8),

20=>array(0,29,30,29,29,30,29,29,30,30,29,30,30,0,7,9),

21=>array(0,30,29,30,29,29,30,29,29,30,29,30,30,0,8,10),

22=>array(5,30,29,30,30,29,29,30,29,29,30,29,30,30,9,11),

23=>array(0,29,30,30,29,30,29,30,29,29,30,29,30,0,10,12),

24=>array(0,29,30,30,29,30,30,29,30,29,30,29,29,0,1,1),

25=>array(4,30,29,30,29,30,30,29,30,30,29,30,29,30,2,2),

26=>array(0,29,29,30,29,30,29,30,30,29,30,30,29,0,3,3),

27=>array(0,30,29,29,30,29,30,29,30,29,30,30,30,0,4,4),

28=>array(2,29,30,29,29,30,29,29,30,29,30,30,30,30,5,5),

29=>array(0,29,30,29,29,30,29,29,30,29,30,30,30,0,6,6),

30=>array(6,29,30,30,29,29,30,29,29,30,29,30,30,29,7,7),

31=>array(0,30,30,29,30,29,30,29,29,30,29,30,29,0,8,8),

32=>array(0,30,30,30,29,30,29,30,29,29,30,29,30,0,9,9),

33=>array(5,29,30,30,29,30,30,29,30,29,30,29,29,30,10,10),

34=>array(0,29,30,29,30,30,29,30,29,30,30,29,30,0,1,11),

35=>array(0,29,29,30,29,30,29,30,30,29,30,30,29,0,2,12),

36=>array(3,30,29,29,30,29,29,30,30,29,30,30,30,29,3,1),

37=>array(0,30,29,29,30,29,29,30,29,30,30,30,29,0,4,2),

38=>array(7,30,30,29,29,30,29,29,30,29,30,30,29,30,5,3),

39=>array(0,30,30,29,29,30,29,29,30,29,30,29,30,0,6,4),

40=>array(0,30,30,29,30,29,30,29,29,30,29,30,29,0,7,5),

41=>array(6,30,30,29,30,30,29,30,29,29,30,29,30,29,8,6),

42=>array(0,30,29,30,30,29,30,29,30,29,30,29,30,0,9,7),

43=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,10,8),

44=>array(4,30,29,30,29,30,29,30,29,30,30,29,30,30,1,9),

45=>array(0,29,29,30,29,29,30,29,30,30,30,29,30,0,2,10),

46=>array(0,30,29,29,30,29,29,30,29,30,30,29,30,0,3,11),

47=>array(2,30,30,29,29,30,29,29,30,29,30,29,30,30,4,12),

48=>array(0,30,29,30,29,30,29,29,30,29,30,29,30,0,5,1),

49=>array(7,30,29,30,30,29,30,29,29,30,29,30,29,30,6,2),

50=>array(0,29,30,30,29,30,30,29,29,30,29,30,29,0,7,3),

51=>array(0,30,29,30,30,29,30,29,30,29,30,29,30,0,8,4),

52=>array(5,29,30,29,30,29,30,29,30,30,29,30,29,30,9,5),

53=>array(0,29,30,29,29,30,30,29,30,30,29,30,29,0,10,6),

54=>array(0,30,29,30,29,29,30,29,30,30,29,30,30,0,1,7),

55=>array(3,29,30,29,30,29,29,30,29,30,29,30,30,30,2,8),

56=>array(0,29,30,29,30,29,29,30,29,30,29,30,30,0,3,9),

57=>array(8,30,29,30,29,30,29,29,30,29,30,29,30,29,4,10),

58=>array(0,30,30,30,29,30,29,29,30,29,30,29,30,0,5,11),

59=>array(0,29,30,30,29,30,29,30,29,30,29,30,29,0,6,12),

60=>array(6,30,29,30,29,30,30,29,30,29,30,29,30,29,7,1),

61=>array(0,30,29,30,29,30,29,30,30,29,30,29,30,0,8,2),

62=>array(0,29,30,29,29,30,29,30,30,29,30,30,29,0,9,3),

63=>array(4,30,29,30,29,29,30,29,30,29,30,30,30,29,10,4),

64=>array(0,30,29,30,29,29,30,29,30,29,30,30,30,0,1,5),

65=>array(0,29,30,29,30,29,29,30,29,29,30,30,29,0,2,6),

66=>array(3,30,30,30,29,30,29,29,30,29,29,30,30,29,3,7),

67=>array(0,30,30,29,30,30,29,29,30,29,30,29,30,0,4,8),

68=>array(7,29,30,29,30,30,29,30,29,30,29,30,29,30,5,9),

69=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,6,10),

70=>array(0,30,29,29,30,29,30,30,29,30,30,29,30,0,7,11),

71=>array(5,29,30,29,29,30,29,30,29,30,30,30,29,30,8,12),

72=>array(0,29,30,29,29,30,29,30,29,30,30,29,30,0,9,1),

73=>array(0,30,29,30,29,29,30,29,29,30,30,29,30,0,10,2),

74=>array(4,30,30,29,30,29,29,30,29,29,30,30,29,30,1,3),

75=>array(0,30,30,29,30,29,29,30,29,29,30,29,30,0,2,4),

76=>array(8,30,30,29,30,29,30,29,30,29,29,30,29,30,3,5),

77=>array(0,30,29,30,30,29,30,29,30,29,30,29,29,0,4,6),

78=>array(0,30,29,30,30,29,30,30,29,30,29,30,29,0,5,7),

79=>array(6,30,29,29,30,29,30,30,29,30,30,29,30,29,6,8),

80=>array(0,30,29,29,30,29,30,29,30,30,29,30,30,0,7,9),

81=>array(0,29,30,29,29,30,29,29,30,30,29,30,30,0,8,10),

82=>array(4,30,29,30,29,29,30,29,29,30,29,30,30,30,9,11),

83=>array(0,30,29,30,29,29,30,29,29,30,29,30,30,0,10,12),

84=>array(10,30,29,30,30,29,29,30,29,29,30,29,30,30,1,1),

85=>array(0,29,30,30,29,30,29,30,29,29,30,29,30,0,2,2),

86=>array(0,29,30,30,29,30,30,29,30,29,30,29,29,0,3,3),

87=>array(6,30,29,30,29,30,30,29,30,30,29,30,29,29,4,4),

88=>array(0,30,29,30,29,30,29,30,30,29,30,30,29,0,5,5),

89=>array(0,30,29,29,30,29,29,30,30,29,30,30,30,0,6,6),

90=>array(5,29,30,29,29,30,29,29,30,29,30,30,30,30,7,7),

91=>array(0,29,30,29,29,30,29,29,30,29,30,30,30,0,8,8),

92=>array(0,29,30,30,29,29,30,29,29,30,29,30,30,0,9,9),

93=>array(3,29,30,30,29,30,29,30,29,29,30,29,30,29,10,10),

94=>array(0,30,30,30,29,30,29,30,29,29,30,29,30,0,1,11),

95=>array(8,29,30,30,29,30,29,30,30,29,29,30,29,30,2,12),

96=>array(0,29,30,29,30,30,29,30,29,30,30,29,29,0,3,1),

97=>array(0,30,29,30,29,30,29,30,30,29,30,30,29,0,4,2),

98=>array(5,30,29,29,30,29,29,30,30,29,30,30,29,30,5,3),

99=>array(0,30,29,29,30,29,29,30,29,30,30,30,29,0,6,4),

100=>array(0,30,30,29,29,30,29,29,30,29,30,30,29,0,7,5),

101=>array(4,30,30,29,30,29,30,29,29,30,29,30,29,30,8,6),

102=>array(0,30,30,29,30,29,30,29,29,30,29,30,29,0,9,7),

103=>array(0,30,30,29,30,30,29,30,29,29,30,29,30,0,10,8),

104=>array(2,29,30,29,30,30,29,30,29,30,29,30,29,30,1,9),

105=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,2,10),

106=>array(7,30,29,30,29,30,29,30,29,30,30,29,30,30,3,11),

107=>array(0,29,29,30,29,29,30,29,30,30,30,29,30,0,4,12),

108=>array(0,30,29,29,30,29,29,30,29,30,30,29,30,0,5,1),

109=>array(5,30,30,29,29,30,29,29,30,29,30,29,30,30,6,2),

110=>array(0,30,29,30,29,30,29,29,30,29,30,29,30,0,7,3),

111=>array(0,30,29,30,30,29,30,29,29,30,29,30,29,0,8,4),

112=>array(4,30,29,30,30,29,30,29,30,29,30,29,30,29,9,5),

113=>array(0,30,29,30,29,30,30,29,30,29,30,29,30,0,10,6),

114=>array(9,29,30,29,30,29,30,29,30,30,29,30,29,30,1,7),

115=>array(0,29,30,29,29,30,29,30,30,30,29,30,29,0,2,8),

116=>array(0,30,29,30,29,29,30,29,30,30,29,30,30,0,3,9),

117=>array(6,29,30,29,30,29,29,30,29,30,29,30,30,30,4,10),

118=>array(0,29,30,29,30,29,29,30,29,30,29,30,30,0,5,11),

119=>array(0,30,29,30,29,30,29,29,30,29,29,30,30,0,6,12),

120=>array(4,29,30,30,30,29,30,29,29,30,29,30,29,30,7,1)

);

##----------

#农历天干

var $mten=array("null","甲","乙","丙","丁","戊","己","庚","辛","壬","癸"); #农历地支

var $mtwelve=array("null","子(鼠)","丑(牛)","寅(虎)","卯(兔)","辰(龙)","巳(蛇)","午(马)","未(羊)","申(猴)","酉(鸡)","戌(狗)","亥(猪)"); #农历月份

var $mmonth=array("闰","正","二","三","四","五","六","七","八","九","十","十一","十二","月");

var $mday=array("null","初一","初二","初三","初四","初五","初六","初七","初八","初九","初十","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十","廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十");#农历日

##-----------

#赋给初值

#天干地支

var $ten = 0;

var $twelve = 0;

function MyPub($cYear, $cMonth, $cDay){

$total = 11; #阳历总天数 至1900年12月21日

$mtotal = 0; #阴历总天数

for ($y = 1901; $y < $cYear; $y++){

$total += 365;

if ($y % 4 == 0){

$total++;

}

}

#再加当年的几个月

switch ($cMonth){

case 12:

$total += 30;

case 11:

$total += 31;

case 10:

$total += 30;

case 9:

$total += 31;

case 8:

$total += 31;

case 7:

$total += 30;

case 6:

$total += 31;

case 5:

$total += 30;

case 4:

$total += 31;

case 3:

$total += 28;

case 2:

$total += 31;

}

#如果当年是闰年还要加一天

if ($cYear % 4 == 0 and $cMonth > 2){

$total++;

}

$total += $cDay - 1;

##------------

#用农历的天数累加来判断是否超过阳历的天数

for ($j = 0; $j <= 120; $j++){

$i = 1;

for ($i = 1; $i <= 13; $i++){

$mtotal += $this->everyCMonth[$j][$i];

if ($mtotal >= $total){

$flag = 1;

break;

}

}

if ($flag == 1){

break;

}

}

return array("m" => $j, "d" => $i, "t" => $total, "n" => $mtotal);

}

function Cal($Year, $Month, $Day){

$Par = $this->MyPub($Year, $Month, $Day);

$md = $this->everyCMonth[$Par["m"]][$Par["d"]] - ($Par["n"] - $Par["t"]);

$week = ($Par["t"] + 5) % 7;

if ($this->everyCMonth[$Par["m"]][0] <> 0 and $this->everyCMonth[$Par["m"]][0] < $Par["d"]){

$mm = $Par["d"] - 1;

}else{

$mm = $Par["d"];

}

if ($Par["d"] == $this->everyCMonth[$Par["d"]][0] + 1 and $this->everyCMonth[$Par["d"]][0] <> 0){

$cMonth = $this->mmonth[0].$this->mmonth[$mm]; #闰月

}

else{

$cMonth = $this->mmonth[$mm].$this->mmonth[13];

}

return array("year" => $this->mten[$this->everyCMonth[$Par["m"]][14]].$this->mtwelve[$this->everyCMonth[$Par["m"]][15]], "month" => $cMonth, "day" => $this->mday[$md], "week" => $week);

}

}

//调用示例

$test = new Calendar;

$Year = $test->Cal(2004, 2, 20);

echo $Year["year"]."年".$Year["month"].$Year["day"]."周".$Year["week"];

?>

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33503186/article/details/116253711

智能推荐

《Unity3D网络游戏实战》第2章_yxqq378287007的博客-程序员宅基地

《Unity3D网络游戏实战》第2章异步代码异步客户端异步代码Async.csusing System;using System.Threading;namespace Async { class MainClass { public static void Main (string[] args) { Timer timer = new Timer(Timeout, null, 2000, 0); Thread.Sleep(2000*2); Console.WriteL

安装系统_iefanrui的博客-程序员宅基地

第一步、准备工作    安装系统前要做一些准备工作,首先是制作你要安装的系统的系统镜像。制作系统镜像要先下载一个UltraISO软件。然后右键点击选择“以管理员的身份运行”(注意:必须这样做)。打开后点击左上角的“文件”-—“打开”,找到存放系统镜像的目录,选中系统镜像,然后点击“打开”。然后点击 “启动”—“开始硬盘录入”,然后选择一个U盘作为系统启动盘(注意:这个U盘必须足够大,一般16G的就...

pv3d 的 Camera3D练习_suzhou_boy1的博客-程序员宅基地

 http://www.sandy1219.com/3d/test2/testflabcamera.html  package{ import flab3d.FlabCamera3D; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.Stage

CAsyncSocket::Send()、OnSend()_hahahapeige的博客-程序员宅基地

virtual int Send( const void* lpBuf, int nBufLen, int nFlags = 0);Dialog中Socket设置AsyncSelect(FD_WRITE),触发虚函数OnSend(),之后调用Send()发送消息。参数lpBuf包含要传输的数据的缓冲区。nBufLen中的数据的长度lpBuf以字节为单位。nFlags...

怎么学python-新手如何自学python课程?_weixin_37988176的博客-程序员宅基地

为了Python的自学党们,传智播客真的是拼了,今天给大家讲讲新手如何自学python课程?传智播客不仅有“人工智能+Python学习路线图”,还根据以往的经验,总结出学习Python之前的各种问题,想详细了解,从此贴开始吧!!!想学Python就已经迈出了通向成功的第一步,想要通过自学成才的话,是需要很大的毅力和吃苦精神,切忌三天打鱼两天晒网。建议通过我们传智黑马论坛的python相关帖子来一步...

利用compositionstart/end事件监听输入法事件_青山院长白菜的博客-程序员宅基地_compositionstart

var flag = false;document.querySelector('input').oninput = function() { setTimeout(() =&amp;gt; { if (!flag) console.log(this.value); }, 0);};document.querySelector('input').onkeyup = function(...

随便推点

交换排序_hailushijie的博客-程序员宅基地

/** * 从0位置开始,依次和后面所有元素进行比较,并将小数交换到前面。 * o(N*N) * @author *冒泡排序,选择排序,插入排序,交换排序属于简单排序方法 */public class ExchangeSort { private static int[] array = new int[]{1,8,2,9,3,7,11,23,90,4,5}; public sta

day03-分支结构switch语句、循环语句、Random随机数_BY_WJL的博客-程序员宅基地

1. switch语句1.1 分支语句switch语句格式switch (表达式) { case 1: 语句体1; break; case 2: 语句体2; break; ... default: 语句体n+1; break;}执行流程:首先计算出表达式的值其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束。最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结

平面物理引擎(我们的星星)1.0--效果_断水客的博客-程序员宅基地

作为这个系列的补充篇(放在1.1之前的1.0),我们不看代码,先看看这个星星类的使用效果,看看我们的星星的表现。

数据库之联合查询_Echo佩雨的博客-程序员宅基地_数据库联合

数据库之联合查询联合查询: 将多次查询(多条select语句),在记录上进行拼接(字段不会增加)基本语法多条select语句构成: 每一条select语句获取的字段数必须严格一致(但是字段类型无关)select 语句1unionselect 语句2Union选项 : 与select选项一样有两个All:保留全部(不管重复)Distinct:去重(整个重复):默认的mysq...

常用html、CSS、javascript前端命名规范_weixin_33834910的博客-程序员宅基地

无意发现自己文件夹里面有这么一个文件,具体从哪里来的不记得了,仔细看下,发现总结的挺好的,贴出来分享一下。无论是从技术角度还是开发视角,对于web前端开发规范文档都有一定规范,本文就css3和html5的发展前景总结了一系列的web开发文档,仅供大家参考。规范目的:为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档...

python接口自动化测试 unittest框架官网学习_一碗烈酒的博客-程序员宅基地

接口自动化: +, 接口session使用,关联 import unittest import warnings import requests class TestShop(unittest.TestCase): def setUp(self): # 初始化实例化session对象 ...