- 浏览: 126608 次
- 性别:
- 来自: 上海
-
文章分类
最新评论
-
wahahachuang8:
GoEasy实时Web推送,支持后台推送和前台推送两种:后台推 ...
PHP socket 服务器框架--Workerman
// 今天根据客户的需求对时间进行了转换,就是客户要求增加农历日期的显示,在网上抄袭了一段,稍微修改了一下运行成功了,不难的,改动的很少的.
<?php
/*
*
* 陈海波 新二级页面 农历转换成公历
*
* */
// lunar.php 新建这个php文件,所有的代码无需改,需要改的是下面teacher.php 的几行
class Lunar
{
private $_SMDay = array(1 => 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);//定义公历月分天数
private $_LStart = 1950 ;//农历从1950年开始
private $_LMDay = array(
//差:该年的农历正月初一到该年公历1月1日的天数;1~12:农历月份天数;闰:如有闰月,记录该月平月天数
// 差 1 2 3 4 5 6 7 8 9 10 11 12 闰
array(47,29,30,30,29,30,30,29,29,30,29,30,29),
array(36,30,29,30,30,29,30,29,30,29,30,29,30),
array(6,29,30,29,30,59,29,30,30,29,30,29,30,29), //五月29 闰五月30
array(44,29,30,29,29,30,30,29,30,30,29,30,29),
array(33,30,29,30,29,29,30,29,30,30,29,30,30),
array(23,29,30,59,29,29,30,29,30,29,30,30,30,29), //三月29 闰三月30
array(42,29,30,29,30,29,29,30,29,30,29,30,30),
array(30,30,29,30,29,30,29,29,59,30,29,30,29,30), //八月30 闰八月29
array(48,30,30,30,29,30,29,29,30,29,30,29,30),
array(38,29,30,30,29,30,29,30,29,30,29,30,29),
array(27,30,29,30,29,30,59,30,29,30,29,30,29,30), //六月30 闰六月29
array(45,30,29,30,29,30,29,30,30,29,30,29,30),
array(35,29,30,29,29,30,29,30,30,29,30,30,29),
array(24,30,29,30,58,30,29,30,29,30,30,30,29,29), //四月29 闰四月29
array(43,30,29,30,29,29,30,29,30,29,30,30,30),
array(32,29,30,29,30,29,29,30,29,29,30,30,29),
array(20,30,30,59,30,29,29,30,29,29,30,30,29,30), //三月30 闰三月29
array(39,30,30,29,30,30,29,29,30,29,30,29,30),
array(29,29,30,29,30,30,29,59,30,29,30,29,30,30), //七月30 闰七月29
array(47,29,30,29,30,29,30,30,29,30,29,30,29),
array(36,30,29,29,30,29,30,30,29,30,30,29,30),
array(26,29,30,29,29,59,30,29,30,30,30,29,30,30), //五月30 闰五月29
array(45,29,30,29,29,30,29,30,29,30,30,29,30),
array(33,30,29,30,29,29,30,29,29,30,30,29,30),
array(22,30,30,29,59,29,30,29,29,30,30,29,30,30), //四月30 闰四月29
array(41,30,30,29,30,29,29,30,29,29,30,29,30),
array(30,30,30,29,30,29,30,29,59,29,30,29,30,30), //八月30 闰八月29
array(48,30,29,30,30,29,30,29,30,29,30,29,29),
array(37,30,29,30,30,29,30,30,29,30,29,30,29),
array(27,30,29,29,30,29,60,29,30,30,29,30,29,30), //六月30 闰六月30
array(46,30,29,29,30,29,30,29,30,30,29,30,30),
array(35,29,30,29,29,30,29,29,30,30,29,30,30),
array(24,30,29,30,58,30,29,29,30,29,30,30,30,29), //四月29 闰四月29
array(43,30,29,30,29,29,30,29,29,30,29,30,30),
array(32,30,29,30,30,29,29,30,29,29,59,30,30,30), //十月30 闰十月29
array(50,29,30,30,29,30,29,30,29,29,30,29,30),
array(39,29,30,30,29,30,30,29,30,29,30,29,29),
array(28,30,29,30,29,30,59,30,30,29,30,29,29,30), //六月30 闰六月29
array(47,30,29,30,29,30,29,30,30,29,30,30,29),
array(36,30,29,29,30,29,30,29,30,29,30,30,30),
array(26,29,30,29,29,59,29,30,29,30,30,30,30,30), //五月30 闰五月29
array(45,29,30,29,29,30,29,29,30,29,30,30,30),
array(34,29,30,30,29,29,30,29,29,30,29,30,30),
array(22,29,30,59,30,29,30,29,29,30,29,30,29,30), //三月30 闰三月29
array(40,30,30,30,29,30,29,30,29,29,30,29,30),
array(30,29,30,30,29,30,29,30,59,29,30,29,30,30), //八月30 闰八月29
array(49,29,30,29,30,30,29,30,29,30,30,29,29),
array(37,30,29,30,29,30,29,30,30,29,30,30,29),
array(27,30,29,29,30,58,30,30,29,30,30,29,30,29), //五月29 闰五月29
array(46,30,29,29,30,29,29,30,29,30,30,30,29),
array(35,30,30,29,29,30,29,29,30,29,30,30,29),
array(23,30,30,29,59,30,29,29,30,29,30,29,30,30), //四月30 闰四月29
array(42,30,30,29,30,29,30,29,29,30,29,30,29),
array(31,30,30,29,30,30,29,30,29,29,30,29,30),
array(21,29,59,30,30,29,30,29,30,29,30,29,30,30), //二月30 闰二月29
array(39,29,30,29,30,29,30,30,29,30,29,30,29),
array(28,30,29,30,29,30,29,59,30,30,29,30,30,30), //七月30 闰七月29
array(48,29,29,30,29,29,30,29,30,30,30,29,30),
array(37,30,29,29,30,29,29,30,29,30,30,29,30),
array(25,30,30,29,29,59,29,30,29,30,29,30,30,30), //五月30 闰五月29
array(44,30,29,30,29,30,29,29,30,29,30,29,30),
array(33,30,29,30,30,29,30,29,29,30,29,30,29),
array(22,30,29,30,59,30,29,30,29,30,29,30,29,30), //四月30 闰四月29
array(40,30,29,30,29,30,30,29,30,29,30,29,30),
array(30,29,30,29,30,29,30,29,30,59,30,29,30,30), //九月30 闰九月29
array(49,29,30,29,29,30,29,30,30,30,29,30,29),
array(38,30,29,30,29,29,30,29,30,30,29,30,30),
array(27,29,30,29,30,29,59,29,30,29,30,30,30,29), //六月29 闰六月30
array(46,29,30,29,30,29,29,30,29,30,29,30,30),
array(35,30,29,30,29,30,29,29,30,29,29,30,30),
array(24,29,30,30,59,30,29,29,30,29,30,29,30,30), //四月30 闰四月29
array(42,29,30,30,29,30,29,30,29,30,29,30,29),
array(31,30,29,30,29,30,30,29,30,29,30,29,30),
array(21,29,59,29,30,30,29,30,30,29,30,29,30,30), //二月30 闰二月29
array(40,29,30,29,29,30,29,30,30,29,30,30,29),
array(28,30,29,30,29,29,59,30,29,30,30,30,29,30), //六月30 闰六月29
array(47,30,29,30,29,29,30,29,29,30,30,30,29),
array(36,30,30,29,30,29,29,30,29,29,30,30,29),
array(25,30,30,30,29,59,29,30,29,29,30,30,29,30), //五月30 闰五月29
array(43,30,30,29,30,29,30,29,30,29,29,30,30),
array(33,29,30,29,30,30,29,30,29,30,29,30,29),
array(22,29,30,59,30,29,30,30,29,30,29,30,29,30), //三月30 闰三月29
array(41,30,29,29,30,29,30,30,29,30,30,29,30),
array(30,29,30,29,29,30,29,30,29,30,30,59,30,30), //十一月30 闰十一月29
array(49,29,30,29,29,30,29,30,29,30,30,29,30),
array(38,30,29,30,29,29,30,29,29,30,30,29,30),
array(27,30,30,29,30,29,59,29,29,30,29,30,30,29), //六月29 闰六月30
array(45,30,30,29,30,29,29,30,29,29,30,29,30),
array(34,30,30,29,30,29,30,29,30,29,29,30,29),
array(23,30,30,29,30,59,30,29,30,29,30,29,29,30), //五月30 闰五月29
array(42,30,29,30,30,29,30,29,30,30,29,30,29),
array(31,29,30,29,30,29,30,30,29,30,30,29,30),
array(21,29,59,29,30,29,30,29,30,30,29,30,30,30), //二月30 闰二月29
array(40,29,30,29,29,30,29,29,30,30,29,30,30),
array(29,30,29,30,29,29,30,58,30,29,30,30,30,29), //七月29 闰七月29
array(47,30,29,30,29,29,30,29,29,30,29,30,30),
array(36,30,29,30,29,30,29,30,29,29,30,29,30),
array(25,30,29,30,30,59,29,30,29,29,30,29,30,29), //五月29 闰五月30
array(44,29,30,30,29,30,30,29,30,29,29,30,29),
array(32,30,29,30,29,30,30,29,30,30,29,30,29),
array(22,29,30,59,29,30,29,30,30,29,30,30,29,29), //三月29 闰三月30
);
//是否闰年
private function IsLeapYear($AYear)
{
return ($AYear % 4 == 0) && (($AYear % 100 != 0) || ($AYear % 400 == 0));
}
//公历该月的天数(year:年份; month:月份)
private function GetSMon($year,$month)
{
if($this->IsLeapYear($year) && $month == 2)
return 29;
else
return $this->_SMDay[$month];
}
//农历名称转换
private function LYearName($year)
{
$Name = array("零","一","二","三","四","五","六","七","八","九");
for($i=0;$i<4;$i++)
for($k=0;$k<10;$k++)
if($year[$i]==$k)
$tmp.=$Name[$k];
return $tmp;
}
private function LMonName($month)
{
if($month >=1 && $month <=12 )
{
$Name = array( 1=>"正","二","三","四","五","六","七","八","九","十","十一","十二");
return $Name[$month];
}
return $month;
}
private function LDayName($day)
{
if($day >=1 && $day <=30 )
{
$Name = array( 1 =>
"初一","初二","初三","初四","初五","初六","初七","初八","初九","初十",
"十一","十二","十三","十四","十五","十六","十七","十八","十九","二十",
"廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十"
);
return $Name[$day];
}
return $day;
}
//公历转农历(Sdate:公历日期)
public function S2L($date)
{
list($year, $month, $day) = explode("-", $date);
if($year <= 1951 || $month <= 0 || $day <= 0 || $year >= 2051 ) return false;
//获取查询日期到当年1月1日的天数
$date1 = strtotime($year."-01-01");//当年1月1日
$date2 = strtotime($year."-".$month."-".$day);
$days=round(($date2-$date1)/3600/24);
$days += 1;
//获取相应年度农历数据,化成数组Larray
$Larray = $this->_LMDay[$year - $this->_LStart];
if($days <= $Larray[0])
{
$Lyear = $year - 1;
$days = $Larray[0] - $days;
$Larray = $this->_LMDay[$Lyear - $this->_LStart];
if($days < $Larray[12])
{
$Lmonth = 12;
$Lday = $Larray[12] - $days;
}
else
{
$Lmonth = 11;
$days = $days - $Larray[12];
$Lday = $Larray[11] - $days;
}
}
else
{
$Lyear = $year;
$days = $days - $Larray[0];
for($i = 1;$i <= 12;$i++)
{
if($days > $Larray[$i]) $days = $days - $Larray[$i];
else
{
if ($days > 30){
$days = $days - $Larray[13];
$Ltype = 1;
}
$Lmonth = $i;
$Lday = $days;
break;
}
}
}
return mktime(0, 0, 0, $Lmonth, $Lday, $Lyear);
//$Ldate = $Lyear."-".$Lmonth."-".$Lday;
//$Ldate = $this->LYearName($Lyear)."年".$this->LMonName($Lmonth)."月".$this->LDayName($Lday);
//if($Ltype) $Ldate.="(闰)";
//return $Ldate;
}
//农历转公历(date:农历日期; type:是否闰月)
public function L2S($date,$type = 0)
{
list($year, $month, $day) = split("-",$date);
if($year <= 1951 || $month <= 0 || $day <= 0 || $year >= 2051 ) return false;
$Larray = $this->_LMDay[$year - $this->_LStart];
if($type == 1 && count($Larray)<=12 ) return false;//要求查询闰,但查无闰月
//如果查询的农历是闰月并该年度农历数组存在闰月数据就获取
if($Larray[$month]>30 && $type == 1 && count($Larray) >=13) $day = $Larray[13] + $day;
//获取该年农历日期到公历1月1日的天数
$days = $day;
for($i=0;$i<=$month-1;$i++)
$days += $Larray[$i];
//当查询农历日期距离公历1月1日超过一年时
if($days > 366 || ($this->GetSMon($month,2)!=29 && $days>365 ))
{
$Syear = $year +1;
if($this->GetSMon($month,2)!=29)
$days-=366;
else
$days-=365;
if($days > $this->_SMDay[1])
{
$Smonth = 2;
$Sday = $days - $this->_SMDay[1];
}
else
{
$Smonth = 1;
$Sday = $days;
}
}
else
{
$Syear =$year;
for($i=1;$i<=12;$i++)
{
if($days > $this->GetSMon($Syear,$i))
$days-=$this->GetSMon($Syear,$i);
else
{
$Smonth = $i;
$Sday = $days;
break;
}
}
}
return mktime(0, 0, 0, $Smonth, $Sday, $Syear);
//$Sdate = $Syear."-".$Smonth."-".$Sday;
//return $Sdate;
}
}
?>
// teacher.php
//公历转农历
require_once(CORE_."Lunar.php"); // 加载lunar.php文件
$today = date("Y-m-d");
$lunar = new Lunar(); // 实例化类
$nonglitime = array();
$nl = date("Y-n-d",$lunar->S2L($today));
echo $nl;exit; // 转为农历是:2012-05-25
发表评论
-
搞个简单的队列
2019-07-12 20:29 0//test测试 public static fu ... -
H5页面生成word文件及发送邮件
2017-07-13 11:48 1501最近工作中有用到生成word文档及发送该附件的邮件。先说说 ... -
PHP 传输会话curl函数总结
2017-02-17 14:30 481接手公司项目PC端负责人的重担,责任担当重大;从需求分 ... -
PHP 利用Curl实现多线程抓取网页和下载文件
2016-10-29 19:44 0http://onestopweb.iteye.com/bl ... -
PHP socket 服务器框架--Workerman
2016-09-28 17:29 3395马上就是国庆长假了 ... -
大型分布式网站之计划任务
2016-05-11 18:39 552最近工作做的多是活动相关的,活动的上架下架过期等需要定时执 ... -
PHP 数组遍历的差异
2015-12-22 15:22 709两个分别有 5000 个元素的数组,计算他们的差集,也就是 ... -
php计算查看一段程序代码的运行时间
2015-12-22 15:00 1616作为日后备用的功能吧,查看代码执行的效率,mysql有ex ... -
php缓存技术总结
2015-12-20 20:51 811看到一篇不错的关于php ... -
ajax页面预加载
2015-09-07 17:54 3862每天有时间休息的时候我们总是打开qq空间看看亲朋好友的说说 ... -
php函数快速简单截取中英文
2015-07-09 14:55 679我们在开发过程中,经常会碰到截取中文英文数字等的问题,大家 ... -
温习YII框架
2014-10-06 11:15 693很久没来写技术博客了但是没忘,现在的公司用的是thinkp ... -
PHP缓存应用代码
2014-04-20 22:03 1044再有2个月就该庆祝自己参加工作3年整了,也是自己运用php ... -
PHP静态化之真静态化
2014-04-13 22:12 2549参考文献:http://blog.sin ... -
yii 操作session
2013-11-07 10:14 730公司新项目自9月份开始要用到YII 说实话,真心不喜欢使用 ... -
php 获取百度的热词数据
2013-05-08 14:17 957/** * 获取百度实时的热词 * @use ... -
php去除字符串首尾中英文空格
2013-05-08 14:07 928/** * 去除空格(包括中英文空格) * ... -
统计某个值在数组中出现的次数
2013-02-26 15:54 1627// 统计某个值在数组中出现的次 ... -
php随机生成颜色(值)
2013-02-26 15:49 1041用PHP实现随机颜色生成 http://blog.16 ... -
php生成条形码的图片
2012-12-17 20:56 3710// 因为用户的需要 ...
相关推荐
在PHP中实现公历日期与农历日期的互转换是一个常见的需求,特别是在处理与中国传统节日相关的日期计算时。这里提供了一段示例代码,用于完成这一功能。这段代码定义了一个名为`Lunar`的类,包含了农历转换为公历以及...
Java阳历转农历类可以将公历日期转换为农历日期,提供了一个便捷的方式来获取农历日期。 在 Java 中,实现阳历转农历需要使用到 Calendar 和 Date 类。Calendar 类提供了一个抽象的日历模型,可以用来计算日期的年...
在这个例子中,可能包含了显示公历和农历日期的控件,以及可能有的转换按钮。 5. `lunardemo.dof` 和 `lunar.dof`:这些都是工程(Project)选项文件,包含了项目的配置信息,如编译设置、调试选项等。每个项目可能...
- **日期结构体**:定义表示公历和农历日期的数据结构,可能包括年、月、日、星期等字段。 - **天文计算函数**:用于计算农历月首、闰年等天文信息的函数。 - **转换函数**:实现公历到农历和农历到公历转换的核心...
调用简单,下拉传一日期加类型即可转换日期的类型,如: CalConvert(new Date(2010,3,19), false) //农历转换为公历 CalConvert(new Date(2010,3,19), true)//公历转换成农历
标题中的“农历与公历转换_PB日历公历农历_”指的是使用PowerBuilder(PB)开发的一个程序,该程序能够实现公历日期与农历日期之间的转换功能。在计算机编程中,这种转换通常涉及到时间日期处理,是软件开发中的一个...
公历和农历互相转换公农历互转API: 作用 返回值 方法 参数 公历日期转农历日期 String DateConvert.sCalendarSolarToLundar(int year,int month,int day) 农历日期转公历日期 String DateConvert....
2. `public Solar toSolar()`:将农历日期转换为公历日期。 3. `public Lunar toLunar()`:如果从公历转换而来,此方法用于返回当前农历日期的公历表示。 4. `public int getDaysToNextBirthday()`:计算从当前日期...
java阳历转换为农历是指将公历日期转换为农历日期的过程。Java是一种广泛使用的编程语言,通过使用Java语言,可以实现阳历日期到农历日期的转换。 知识点一:Java中的日期类 在Java中,日期类是java.util包下的一...
3. **日期范围转换**:可能支持批量转换一个日期范围内的所有日期,例如将一整年的农历日期转换为公历。 4. **日期合法性检查**:确保输入的日期在有效的历法范围内,避免因非法日期导致的错误。 5. **节假日和...
首先,我们要创建两个日期选择器,一个用于选择阳历日期,另一个用于选择农历日期。这两个选择器可以通过同一个事件响应函数进行关联,当用户在任一选择器中选择日期后,都会触发该函数。 在事件响应函数中,我们...
在本文中,我们将深入探讨如何使用51...总的来说,51单片机上的公历与农历转换是嵌入式系统中的一个典型应用,通过理解和实现这个项目,不仅可以提升对日期处理算法的理解,也能加深对51单片机及C语言编程的掌握。
3. 公历到农历的转换:同样需要复杂的算法,通常涉及到查找特定公历日期在历史上的农历日期记录,因为公历日期与农历日期的对应关系不是线性的。 4. 边界条件处理:确保转换的正确性,尤其是在1902年到2100年这个...
1. `LunarConverter`:这个类将包含农历和公历转换的核心算法,包括计算干支、节气和农历日期。 2. `DateDisplay`:一个Qt部件,用于显示日期、节气和干支信息,它可以连接到`LunarConverter`的信号,当公历日期改变...
反之,也可以创建一个`LunarToGregorian`函数,将农历日期转换为公历。 5. **循环与条件判断**:在编写转换函数时,可能会用到循环(For...Next或While... Wend)来遍历月份和年份,以及条件语句(If...Then...Else...
Oracle数据库系统提供了强大的日期处理功能,其中包括将公历(阳历)日期转换为农历日期。在Oracle中,虽然没有内置的直接转换函数来实现这一功能,但可以通过自定义函数或者利用现有的开源存储过程来实现这一转换。...
总的来说,`clsdate.m`是一个实用的MATLAB工具,它可以帮助我们更好地理解和处理不同历法下的日期转换,对于那些需要进行跨历法计算的工作非常有价值。通过熟练掌握这样的函数,我们可以更便捷地在中国传统节日、...
公历转换农历的算法是指将公历日期转换为农历日期的过程。公历是国际通用的日期系统,而农历则是中国传统的日期系统。农历的日期系统与公历不同,它的日期是根据月亮的周期变化而定的。 在计算机程序设计中,实现...
- 最后,使用 `nStr1` 和 `nStr2` 数组将计算得到的农历日期转换为汉字表示。 #### 5. 实际应用 在实际应用中,这种日期转换功能可以集成到各种应用程序和服务中,如日历应用、天气预报、节日提醒等。不仅可以帮助...