直播中
這幾天突然有很多的人問(wèn)這樣的問(wèn)題,就是如何在PHP中實(shí)現(xiàn)在VB中的DateAdd的函數(shù),呵呵!這個(gè)可是問(wèn)個(gè)正著。
本來(lái)這個(gè)問(wèn)題是 豆腐 去 華為 應(yīng)聘的時(shí)候的一個(gè)考試題,不過(guò)當(dāng)時(shí)是用C++實(shí)現(xiàn)的。沒(méi)有想到這樣的大公司,竟
然用這樣的小兒科來(lái)考試:),后來(lái)我沒(méi)有去,這兩天 應(yīng) http://www.chinaspx.com 的 網(wǎng)友--》運(yùn)氣,用PHP重新
寫(xiě)了這個(gè)函數(shù)。
這個(gè)函數(shù)是很簡(jiǎn)單,就是加上給 指定時(shí)間加上一天,得到新生成的日期,如果要擴(kuò)展,也是很簡(jiǎn)單的。
下面首先來(lái)看這個(gè)函數(shù),首先要提前講個(gè)函數(shù),判斷當(dāng)前是否是閏年的函數(shù)
function CheckRun($year){
if($year%4==0 && ($year%100!=0 || $year%400==0) )
return true;
else
return false;
}
我們要在下面的程序中用到這個(gè)函數(shù)
function DateAdd($date){
$parts = explode(' ', $date);
$date = $parts[0];
$time = $parts[1];
$ymd = explode('-', $date);
$hms = explode(':', $time);
$year = $ymd[0];
$month = $ymd[1];
$day = $ymd[2];
$hour = $hms[0];
$minute = $hms[1];
$second = $hms[2];
$day=$day+1 ; //廢話少說(shuō),先把日期加一再說(shuō)
if($month=='1' || $month=='3' || $month=='5' || $month=='7' || $month=='8' || $month=='10' || $month=='12')
if($day==32)
{
$day='1';
$month++;
}
if($month=='4' || $month=='6' || $month=='9' || $month=='11')
if($day==31)
{
$day='1';
$month++;
}
if($month=='2')
if(CheckRun($year))
{
//閏年 2月有 29 天
if($day==30)
{
$day=1;
$month++;
}
}
else
{
//不是閏年
if($day==29)
{
$day=1;
$month++;
}
}
if($month==13)
{
$month=1;
$year++;
}
return $year . "-" . $month . "-" . $day;
}
好了,下面來(lái)測(cè)試一下
echo DateAdd("1999-12-31 11:11:11");
echo DateAdd("2000-2-29 11:11:11");
如果要測(cè)試增加若干天,只要加個(gè)循環(huán)就可以了,相信大家都是 高人,這個(gè)功能很簡(jiǎn)單吧:)