php農歷
❶ php 自動計算12生肖
<?php
//2002/10/23-->出生年月
/*
計算12個星座
計算12個生肖
計算年齡
*/
class timeage
{
public $y = 0;
public $m = 0;
public $d = 0;
public $age = 0;
public $time = 0;
public function __construct($time)
{
$this->time = $time;
$this->y = date('Y',$this->time);
$this->m = date('m',$this->time);
$this->d = date('d',$this->time);
}
public function getage()
{
$this->age = time() - $this->time;
$this->age = $this->age/60/60/24/365;
return (int)$this->age;
}
public function getconstellation()
{
switch ($this->m)
{
case 1:
if ($this->d < 19)
{
$this->constellation = '摩羯座';
return $this->constellation;
}
else
{
$this->constellation = '水瓶座';
return $this->constellation;
}
break;
case 2:
if ($this->d < 18)
{
$this->constellation = '水瓶座';
return $this->constellation;
}
else
{
$this->constellation = '雙魚座';
return $this->constellation;
}
break;
case 3:
if ($this->d < 20)
{
$this->constellation = '雙魚座';
return $this->constellation;
}
else
{
$this->constellation = '白羊座';
return $this->constellation;
}
break;
case 4:
if ($this->d < 19)
{
$this->constellation = '白羊座';
return $this->constellation;
}
else
{
$this->constellation = '金牛座';
return $this->constellation;
}
break;
case 5:
if ($this->d < 20)
{
$this->constellation = '金牛座';
return $this->constellation;
}
else
{
$this->constellation = '雙子座';
return $this->constellation;
}
break;
case 6:
if ($this->d < 21)
{
$this->constellation = '雙子座';
return $this->constellation;
}
else
{
$this->constellation = '巨蟹座';
return $this->constellation;
}
break;
case 7:
if ($this->d < 22)
{
$this->constellation = '巨蟹座';
return $this->constellation;
}
else
{
$this->constellation = '獅子座';
return $this->constellation;
}
break;
case 8:
if ($this->d < 22)
{
$this->constellation = '獅子座';
return $this->constellation;
}
else
{
$this->constellation = '處女座';
return $this->constellation;
}
break;
case 9:
if ($this->d < 22)
{
$this->constellation = '處女座';
return $this->constellation;
}
else
{
$this->constellation = '天秤座';
return $this->constellation;
}
break;
case 10:
if ($this->d < 23)
{
$this->constellation = '天秤座';
return $this->constellation;
}
else
{
$this->constellation = '天蠍座';
return $this->constellation;
}
break;
case 11:
if ($this->d < 22)
{
$this->constellation = '天蠍座';
return $this->constellation;
}
else
{
$this->constellation = '射手座';
return $this->constellation;
}
break;
case 12:
if ($this->d < 20)
{
$this->constellation = '射手座';
return $this->constellation;
}
else
{
$this->constellation = '摩羯座';
return $this->constellation;
}
break;
}
}
public function getzodiac()
{
$this->animals = array('鼠', '牛', '虎', '兔', '龍', '蛇','馬', '羊', '猴', '雞', '狗', '豬');
$this->zodiac = ($this->y - 1900) % 12;
return $this->animals[$this->zodiac];
}
}
$age = strtotime('1993-07-25');
echo $age;
$a = new timeage($age);
echo '<br>';
echo $a->y;
echo '<br>';
echo $a->m;
echo '<br>';
echo $a->d;
echo '<br>';
echo $a->time;
echo '<br>';
echo $a->age;
echo '<br>';
echo $a->getage();
echo '<br>';
echo $a->getconstellation();
echo '<br>';
echo $a->getzodiac();
//沒事干替你寫了個全部的功能函數 寫代碼類 記得給好評
❷ 怎麼獲取日歷的農歷日期
我的農歷演算法可以有點麻煩,我計算了節氣,節日,等一些東西.所以方法有很多個,如果你需要的話,我可以給你源碼.我是修改的源碼,系統自帶日歷.增加的農歷.
❸ php怎麼把日期轉成星座
你可以這樣, 在數據表中插入的是農歷的日期。
然後通過抽取數據表的列值 進行 date(m)函數判斷 ,如果這個是在某某月份范圍內則顯示某某星座 。
❹ 系統自帶的日歷怎麼顯示農歷
方法/步驟
在iPhone主界面找到「設置」
進入「設置」
找到「郵件、通訊錄、日歷」,點擊進入。
點擊「添加賬戶」,這里會看到很多郵箱種類,選擇最下面的「其他」。
在「日歷」下面選擇「添加已訂閱的日歷」。
在「伺服器」一欄中輸入「
iweek.me/m/ical/nong.php?starty=2012&county=3
」,其中2012是起始年份,這個根據你的需要輸入。county指定的為年數,所以這里給出的農歷為2012年、2013年和2014年的。
輸入完畢後點擊右上角的「下一步」。會提示你「正在驗證」。
驗證伺服器過程中會彈出一個對話框,選擇「繼續」即可。
稍等片刻,驗證完畢會出現一些描述信息,點擊右上角的「存儲」
這個時候就可以返回「設置」中的「郵件、通訊錄、日歷」查看剛才添加的日歷賬戶。這個時候該iPhone的日歷中也會顯示農歷了。
❺ php顯示日期,周幾,農歷初幾,什麼節日函數
一般是用js來顯示:
今天是<script language="javascript">RunGLNL();</script>
2014年12月28日 星期日 農歷冬月初七
<script>functionRunGLNL(){vare=newDate,t=newArray("星期日","星期一","星期二","星期三","星期四","星期五","星期六"),i=e.getFullYear()+"年"+[e.getMonth()+1]+"月"+e.getDate()+"日";intHours=e.getHours(),intMinutes=e.getMinutes(),intSeconds=e.getSeconds(),0==intHours?(hours="12:",xfile=""):12>intHours?(hours=intHours+":",xfile=""):12==intHours?(hours="12:",xfile=""):(intHours-=12,hours=intHours+":",xfile=""),minutes=10>intMinutes?"0"+intMinutes+":":intMinutes+":",seconds=10>intSeconds?"0"+intSeconds+"":intSeconds+"",i=i+""+t[e.getDay()];vari=i+""+CnDateofDateStr(e);i+=SolarTerm(e),document.write(i)}functionDaysNumberofDate(e){returnparseInt((Date.parse(e)-Date.parse(e.getFullYear()+"/1/1"))/864e5)+1}functionCnDateofDate(e){vart,i,a,n,r,o,s,l,d=newArray(22,42,218,0,131,73,182,5,14,100,187,0,25,178,91,0,135,106,87,4,18,117,43,0,29,182,149,0,138,173,85,2,21,85,170,0,130,85,108,7,13,201,118,0,23,100,183,0,134,228,174,5,17,234,86,0,27,109,42,0,136,90,170,4,20,173,85,0,129,170,213,9,11,82,234,0,22,169,109,0,132,169,93,6,15,212,174,0,26,234,77,0,135,186,85,4),c=newArray,h=newArray,u=newArray,p=e.getFullYear();if(e.getMonth()+1,e.getDate(),100>p&&(p+=1900),1997>p||p>2020)return0;for(u[0]=d[4*(p-1997)],u[1]=d[4*(p-1997)+1],u[2]=d[4*(p-1997)+2],u[3]=d[4*(p-1997)+3],c[0]=0!=(128&u[0])?12:11,t=127&u[0],n=u[1],n<<=8,n|=u[2],i=u[3],a=15;a>=0;a--)h[15-a]=29,0!=(1<<a&n)&&h[15-a]++,c[15-a]==i?c[15-a+1]=-i:(c[15-a+1]=c[15-a]<0?-c[15-a]+1:c[15-a]+1,c[15-a+1]>12&&(c[15-a+1]=1));if(r=DaysNumberofDate(e)-1,r<=h[0]-t)s=p>1901&&CnDateofDate(newDate(p-1+"/12/31"))<0?-c[0]:c[0],l=t+r;else{for(o=h[0]-t,a=1;r>o&&o+h[a]<r;)o+=h[a],a++;s=c[a],l=r-o}returns>0?100*s+l:100*s-l}functionCnYearofDate(e){vart=e.getFullYear(),i=e.getMonth()+1,a=parseInt(Math.abs(CnDateofDate(e))/100);return100>t&&(t+=1900),a>i&&t--,t-=1864,CnEra(t)+"年"}functionCnMonthofDate(e){vart,i=newArray("零","正","二","三","四","五","六","七","八","九","十","冬","臘");returnt=parseInt(CnDateofDate(e)/100),0>t?"閏"+i[-t]+"月":i[t]+"月"}functionCnDayofDate(e){vart,i=newArray("零","初一","初二","初三","初四","初五","初六","初七","初八","初九","初十","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十","廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十");returnt=Math.abs(CnDateofDate(e))%100,i[t]}functionDaysNumberofMonth(e){vart=e.getFullYear();100>t?t+=1900:t;vari=t;returnt+="/"+(e.getMonth()+1),i+="/"+(e.getMonth()+2),t+="/1",i+="/1",parseInt((Date.parse(i)-Date.parse(t))/864e5)}functionCnEra(e){vart=newArray("甲","乙","丙","丁","戊","己","庚","辛","壬","癸"),i=newArray("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");returnt[e%10]+i[e%12]}functionCnDateofDateStr(e){return"零月"==CnMonthofDate(e)?"請調整您的計算機日期!":"農歷"+CnMonthofDate(e)+CnDayofDate(e)}functionSolarTerm(e){vart=newArray("小寒","大寒","立春","雨水","驚蟄","春分","清明","穀雨","立夏","小滿","芒種","夏至","小暑","大暑","立秋","處暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"),i=newArray(1272060,1275495,1281180,1289445,1299225,1310355,1321560,1333035,1342770,1350855,1356420,1359045,1358580,1355055,1348695,1340040,1329630,1318455,1306935,1297380,1286865,1277730,1274550,1271556),a=31556926,n=newDate(1901);for(n.setTime(94712046e4);e.getFullYear()<n.getFullYear();)n.setTime(n.getTime()-1e3*a);for(;e.getFullYear()>n.getFullYear();)n.setTime(n.getTime()+1e3*a);for(varr=0;e.getMonth()>n.getMonth();r++)n.setTime(n.getTime()+1e3*i[r]);e.getDate()>n.getDate()&&(n.setTime(n.getTime()+1e3*i[r]),r++),e.getDate()>n.getDate()&&(n.setTime(n.getTime()+1e3*i[r]),23==r?r=0:r++);varo="";returne.getDate()==n.getDate()&&(o+="<i>"+t[r]+"</i>"),o}</script>
❻ php怎麼計算出每年春節 中秋 端午節 是公歷的多少號
根據農歷來計算的。。 把農歷一些日期設定關鍵字得成。。
❼ php日歷模塊的運算邏輯求解!如何求日期對應的星期幾!
現在以2010年6月14日為例說明。6月份共有30天,在這個日歷表中共5行,首先需要確定當前所在的日期(當然也可以指定一個日期),比如14日,通過表格可以知道它在第3行對應星期一那列(第3周)。通常每個月第1天不是在表格開始的位置,位置並不固定,同樣不固定的還有每個月的周數,有時候是4周,有時候是5周。這樣,想要完成這個日歷表格就需要確定一些基礎的日期變數,下面具體來看需要設定的基礎變數。
PHP提供了date()函數,該函數提供了豐富的日期處理功能。現在需要獲得的數據有兩個,第一個是當月的總天數;第二個是該月的第一天所在星期中的第幾天,數字表示0(表示星期天)到6(表示星期六)。通過date()函數可以很容易獲得上面的數據。
<?php
//date()函數的基本用法
$year = date('Y'); //獲得年份,例如2006
$month = date('n'); //獲得月份,例如04
$day = date('j'); //獲得日期,例如3
?>
通過mktime()函數和date()函數獲得當月的總天數。
//獲得當月的總天數
$daysInMonth = date("t",mktime(0,0,0,$month,1,$year));
同樣是組合使用mktime()函數和date()函數,獲得該月的第一天所在星期中的第幾天,數字表示0(表示星期天)到6(表示星期六)。
//獲得每個月的第一天,例如4
$firstDay = date("w", mktime(0,0,0,$month,1,$year));
現在重新來觀察下這個日歷表格,我們發現,表格中的值是從1到x(當月的總天數)。我們可以形象地通過一個坐標來表示每一個位置(x,y),表格的起始位置是(0,0),結束位置是(5,4),當月第一天的起始位置是(0,3)。現在來創建一個二維數組來存儲對應的日期。
(1)需要獲得表格的數目。
//計算數組中的日歷表格數
$tempDays = $firstDay + $daysInMonth;
(2)需要算出該月一共有幾周(即表格的行數)。
//獲得表格行數
$weeksInMonth = ceil($tempDays/7);
(3)在獲得行數的變數之後,創建一個二維數組用來存放日期信息,代碼如下:
<?php
for($j=0;$j<$weeksInMonth;$j++)
{
for($i=0;$i<7
;$i++)
{
$counter ++;
$week [$j] [$i] = $counter;
}
}
?>
(4)細心的讀者可能發現,上面的代碼其實是一個雛型,因為它處理出來的數據並沒有過濾那些空白的表格單元。下面來繼續改造下這段代碼,加入過濾和構造的部分。改造後的代碼如下:
<?php
//創建日期二維數組
for($j = 0; $j < $weeksInMonth; $j ++) {
for($i = 0; $i < 7; $i ++) {
$counter ++;
$week [$j] [$i] = $counter;
//日期偏移量
$week [$j] [$i] -= $firstDay;
if (($week [$j] [$i] < 1) || ($week [$j] [$i] > $daysInMonth)) {
$week [$j] [$i] = "";
}
}
}
?>
(5)在獲得正確的二維數組之後,就可以通過foreach()函數將存儲的日期信息遍歷出來,同時插入HTML標簽創建日期
不知是否正確,轉自我的一個朋友
❽ 農歷是怎麼算出來的啊
農歷
農歷的歷月長度是以朔望月為準的,大月30天,小月29天,大月和小月相互彌補,使歷月的平均長度接近朔望月。
農歷固定地把朔的時刻所在日子作為月的第一天——初一日。所謂「朔」,從天文學上講,它有一個確定的時刻,也就是月亮黃經和太陽黃經相同的那一瞬間。(太陽和月亮黃經的計算十分繁瑣和復雜,這里就不予介紹了)
至於定農歷日歷中月份名稱的根據,則是由「中氣」來決定的。即以含「雨水」的月份為一月;以含「春分」的月份為二月;以含「穀雨」的月份為三月;以含「小滿」的月份為四月;以含「夏至」的月份為五月;以含「大暑」的月份為六月;以含「處暑」的月份為七月;以含「秋分」的月份為八月;以含「霜降」的月份為九月;以含「小雪」的月份為十月;以含「冬至」的月份為十一月;以含「大雪」的月份為十二月。(沒有包含中氣的月份作為上月的閏月)
農歷的歷年長度是以回歸年為準的,但一個回歸年比12個朔望月的日數多,而比13個朔望月短,古代天文學家在編制農歷時,為使一個月中任何一天都含有月相的意義,即初一是無月的夜晚,十五左右都是圓月,就以朔望月為主,同時兼顧季節時令,採用十九年七閏的方法:在農歷十九年中,有十二個平年,為一平年十二個月;有七個閏年,每一閏年十三個月。
為什麼採取「十九年七閏」的方法呢? 一個朔望月平均是29.5306日,一個回歸年有12.368個朔望月,0.368小數部分的漸進分數是1/2 、1/3 、3/8 、4/11 、7/19 、46/125, 即每二年加一個閏月,或每三年加一個閏月,或每八年加三個閏月……經過推算,十九年加七個閏月比較合適。因為十九個回歸年=6939.6018日,而十九個農歷年(加七個閏月後)共有235個朔望月,等於6939.6910日,這樣二者就差不多了。
七個閏月安插到十九年當中,其安插方法可是有講究的。農歷閏月的安插,自古以來完全是人為的規定,歷代對閏月的安插也不盡相同。秦代以前,曾把閏月放在一年的末尾,叫做「十三月」。漢初把閏月放在九月之後,叫做「後九月」。到了漢武帝太初元年,又把閏月分插在一年中的各月。以後又規定「不包含中氣的月份作為前一個月的閏月」,直到現在仍沿用這個規定。
為什麼有的月份會沒有中氣呢? 節氣與節氣或中氣與中氣相隔時間平均是30.4368日(即一回歸年排65.2422日平分12等分),而一個朔望月平均是29.5306日,所以節氣或中氣在農歷的月份中的日期逐月推移遲,到一定時候,中氣不在月中,而移到月末,下一個中氣移到另一個月的月初,這樣中間這個月就沒有中氣,而只剩一個節氣了。
上面講過,古人在編制農歷時,以十二個中氣作為十二個月的標志,即雨水是正月的標志,春分是二月的標志,穀雨是三月的標志……把沒有中氣的月份作為閏月就使得歷月名稱與中氣一一對應起來,從而保持了原有中氣的標志。
從十九年七閏來說,在十九個回歸年中有228個節氣和228個中氣, 而農歷十九年有235個朔望月,顯然有七個月沒有節氣和七個月沒有中氣,這樣把沒有中氣的月份定為閏月,也就很自然了。
農歷月的大小很不規則,有時連續兩個、三個、四個大月或連續兩個三個小月,歷年的長短也不一樣,而且差距很大。節氣和中氣,在農歷里的分布日期很不穩定,而且日期變動的范圍很大。這樣看來,農歷似乎顯得十分復雜。其實。農歷還是有一定循環規律的:由於十九個回歸年的日數與十九個農歷年的日數差不多相等,就使農歷每隔十九年差不多是相同的。每隔十九年,農歷相同月份的每月初一日的陽歷日一般相同或者相差一、二天。每隔十九年,節氣和中氣日期大體上是重復的,個別的相差一、兩天。相隔十九年閏月的月份重復或者相差一個月。