Home >Backend Development >PHP Tutorial >如何实现给定日期的若干天以后的日期(有点类似VB中的DateAdd)_PHP

如何实现给定日期的若干天以后的日期(有点类似VB中的DateAdd)_PHP

WBOY
WBOYOriginal
2016-06-01 12:42:40943browse

如何实现给定日期的若干天以后的日期(有点类似VB中的DateAdd)
/*
  豆腐制作  都是精品
  http://www.asp888.net 豆腐技术站
  如转载 请保留完整版权信息
*/
这几天突然有很多的人问这样的问题,就是如何在PHP中实现在VB中的DateAdd的函数,呵呵!这个可是问个正着。
本来这个问题是 豆腐 去 华为 应聘的时候的一个考试题,不过当时是用C++实现的。没有想到这样的大公司,竟
然用这样的小儿科来考试:),后来我没有去,这两天 应 http://www.chinaspx.com 的 网友--》运气,用PHP重新
写了这个函数。
这个函数是很简单,就是加上给 指定时间加上一天,得到新生成的日期,如果要扩展,也是很简单的。
下面首先来看这个函数,首先要提前讲个函数,判断当前是否是闰年的函数
function CheckRun($year){
  if($year%4==0 && ($year%100!=0 || $year%400==0) )
    return true;
  else
    return false;
}
我们要在下面的程序中用到这个函数
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 ;   //废话少说,先把日期加一再说
  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;
}
好了,下面来测试一下
echo DateAdd("1999-12-31 11:11:11");
echo DateAdd("2000-2-29 11:11:11");
如果要测试增加若干天,只要加个循环就可以了,相信大家都是 高人,这个功能很简单吧:)

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn