//取出当前日期的前一天
//注意,参数变量$xsrq必须为格式2000.10.23
//这是我以前写的一个方法,你可以参考一下
//我又特别给你注释一下,以前不带注释的
function lastdate($xsrq) {
      //以“.”号(如果你的时间格式为2000-10-23,你也可以
      //以“-”分割)为分割,获得数组
      $pieces = explode(".", $xsrq);
 
     //处理日期格式(如:08处理为8)
      $iday = intval($pieces[2]);
 
     //当前日期减1,你需要的是加50
      $day = $iday -1;
      
     //获取月
      $month = intval($pieces[1]);
 
     //获取年
      $year = $pieces[0];//处理时间格式,算了,你自己看吧,我现在也不做PHP了,现在做JSP
      $ilastday = date( "m-d-Y", mktime(0,0,0,$month,$day,$year) );
      $pies = explode("-",$ilastday);
      $lday = intval($pies[1]);
      $lmonth = intval($pies[0]);
      $lyear = intval($pies[2]);
      $lastday = trim($lyear).".".trim($lmonth).".".trim($lday);
      return($lastday);
}

解决方案 »

  1.   

    我又来卖自己的代码喽~~~:)<?
    //日期特殊操作控制类
    //宇凡 8月15日
    ?>
    <?
    //获取"YYYY-mm-dd"格式的当前时间
    function NowDate()
    {
    $result = date("Y")."-".date("m")."-".date("d");
    return $result;
    } //获取"YYYY-mm-dd HH:ii:ss"格式的当前时间
    function NowDateTime()
    {
    $result = date("Y")."-".date("m")."-".date("d")." ".date("H").":".date("i").":".date("s");
    return $result;
    } //从"YYYY-mm-dd"格式的时间中提取年
    function GetYear($Date)
    {
    $pos = strpos($Date,"-");
    $result = "";
    for ($i=0;$i<$pos;$i++)
    {
    $result = $result.$Date[$i];
    }
    $month = GetMonth($Date);
    $day = GetDay($Date);
    if (!checkdate($month,$day,$result))
    {
    $result = false;
    }
    return $result;
    } //从"YYYY-mm-dd"格式的时间中提取月
    function GetMonth($Date)
    {
    $pos1 = strpos($Date,"-");
    $pos2 = strrpos($Date,"-");
    $result = "";
    for ($i=$pos1+1;$i<$pos2;$i++)
    {
    $result = $result.$Date[$i];
    }
    $year = GetYear($Date);
    $day = GetDay($Date);
    if (!checkdate($result,$day,$year))
    {
    $result = false;
    }
    return $result;
    } //从"YYYY-mm-dd"格式的时间中提取日
    function GetDay($Date)
    {
    $pos = strrpos($Date,"-");
    $result = "";
    for ($i=$pos+1;$i<10;$i++)
    {
    $result = $result.$Date[$i];
    }
    $year = GetYear($Date);
    $month = GetDay($Date);
    if (!checkdate($month,$result,$year))
    {
    $result = false;
    }
    return $result;
    return $result;
    } //检查闰年,返回布尔值
    function CheckLeap($year)
    {
    $result = (($year % 4 == 0) && (($year % 100 <> 0) || ($year % 400 == 0)));
    return $result;
    }

    //在当前日期上加天数 返回"YYYY-mm-dd"格式的时间
    function AddDay($offset)
    {
    $year=date("Y");
    $month=date("m");
    $day=date("d");
    for ($i=0;$i<$offset;$i++)
    {
    switch ($month) {
    case 1:
    {
    if ($day==31) { 
    $day = 1;
    $month = 2;
    }
    else {
    $day=$day + 1;
    }
    }
    break;
    case 2:
    {
    if (CheckLeap($year)) {
    if ($day == 29) { 
    $day = 1;
    $month = 3;
    }
    else {
    $day=$day + 1;
    }
    }
    else {
    if ($day == 28) { 
    $day = 1;
    $month = 3;
    }
    else {
    $day=$day + 1;
    }
    }
    }
    break;
    case 3:
    {
    if ($day==31) { 
    $day = 1;
    $month = 4;
    }
    else {
    $day=$day + 1;
    }
    }
    break;
    case 4:
    {
    if ($day==30) { 
    $day = 1;
    $month = 5;
    }
    else {
    $day=$day + 1;
    }
    }
    break;
    case 5:
    {
    if ($day==31) { 
    $day = 1;
    $month = 6;
    }
    else {
    $day=$day + 1;
    }
    }
    break;
    case 6:
    {
    if ($day==30) { 
    $day = 1;
    $month = 7;
    }
    else {
    $day=$day + 1;
    }
    }
    break;
    case 7:
    {
    if ($day==31) { 
    $day = 1;
    $month = 8;
    }
    else {
    $day=$day + 1;
    }
    }
    break;
    case 8:
    {
    if ($day==31) { 
    $day = 1;
    $month = 9;
    }
    else {
    $day=$day + 1;
    }
    }
    break;
    case 9:
    {
    if ($day==30) { 
    $day = 1;
    $month = 10;
    }
    else {
    $day=$day + 1;
    }
    }
    break;
    case 10:
    {
    if ($day==31) { 
    $day = 1;
    $month = 11;
    }
    else {
    $day=$day + 1;
    }
    }
    break;
    case 11:
    {
    if ($day==30) { 
    $day = 1;
    $month = 12;
    }
    else {
    $day=$day + 1;
    }
    }
    break;
    case 12:
    {
    if ($day==31) { 
    $day = 1;
    $month = 1;
    $year = $year + 1;
    }
    else {
    $day=$day + 1;
    }
    }
    }
    }
    $result=$year."-".$month."-".$day;
    return $result;
    } //在当前日期上减天数 返回"YYYY-mm-dd"格式的时间
    function AbateDay($offset)
    {
    $year=date("Y");
    $month=date("m");
    $day=date("d");
    for ($i=0;$i<$offset;$i++)
    {
    switch ($month) {
    case 1:
    {
    if ($day==1) { 
    $day = 31;
    $month = 12;
    $year = $year - 1;
    }
    else {
    $day=$day - 1;
    }
    }
    break;
    case 2:
    {
    if ($day == 1) { 
    $day = 31;
    $month = 1;
    }
    else {
    $day=$day - 1;
    }
    }
    break;
    case 3:
    {
    if ($day == 1) {
    if (CheckLeap($year)) {
    $day = 29;
    }
    else {
    $day = 28;
    }
    $month = 2;
    }
    else {
    $day=$day - 1;
    }
    }
    break;
    case 4:
    {
    if ($day == 1) { 
    $day = 31;
    $month = 3;
    }
    else {
    $day=$day - 1;
    }
    }
    break;
    case 5:
    {
    if ($day == 1) { 
    $day = 30;
    $month = 4;
    }
    else {
    $day=$day - 1;
    }
    }
    break;
    case 6:
    {
    if ($day == 1) { 
    $day = 31;
    $month = 5;
    }
    else {
    $day=$day - 1;
    }
    }
    break;
    case 7:
    {
    if ($day == 1) { 
    $day = 30;
    $month = 6;
    }
    else {
    $day=$day - 1;
    }
    }
    break;
    case 8:
    {
    if ($day == 1) { 
    $day = 31;
    $month = 7;
    }
    else {
    $day=$day - 1;
    }
    }
    break;
    case 9:
    {
    if ($day == 1) { 
    $day = 31;
    $month = 8;
    }
    else {
    $day=$day - 1;
    }
    }
    break;
    case 10:
    {
    if ($day == 1) { 
    $day = 30;
    $month = 9;
    }
    else {
    $day=$day - 1;
    }
    }
    break;
    case 11:
    {
    if ($day == 1) { 
    $day = 31;
    $month = 10;
    }
    else {
    $day=$day - 1;
    }
    }
    break;
    case 12:
    {
    if ($day == 1) { 
    $day = 30;
    $month = 11;
    }
    else {
    $day=$day - 1;
    }
    }
    }
    }
    $result=$year."-".$month."-".$day;
    return $result;
    } //获取当前周第一天 返回"YYYY-mm-dd"格式的时间
    function FirstDayOfThisWeek()
    {
    $offset=date("w");
    if ($offset==0)
    {
    $offset=7;
    }
    $offset--;
    $result = AbateDay($offset);
    return $result;
    } //获取当前周最后一天 返回"YYYY-mm-dd"格式的时间
    function LastDayOfThisWeek()
    {
    $offset=date("w");
    if ($offset==0)
    {
    $offset=7;
    }
    $offset = 7 - $offset;
    $result = AddDay($offset);
    return $result;
    }

    //获取指定月的天数
    function DaysAmountOfThisMonth($month,$year)
    {
    switch ($month) {
    case 1:
    $result = 31;
    break;
    case 2:
    {
    if (CheckLeap($year)) {
    $result = 29;
    } else {
    $result = 28;
    }
    break;
    }
    case 3:
    $result = 31;
    break;
    case 4:
    $result = 30;
    break;
    case 5:
    $result = 31;
    break;
    case 6:
    $result = 30;
    break;
    case 7:
    $result = 31;
    break;
    case 8:
    $result = 31;
    break;
    case 9:
    $result = 30;
    break;
    case 10:
    $result = 31;
    break;
    case 11:
    $result = 30;
    break;
    case 12:
    $result = 31;
    break;
    }
    return $result;
    }?>
      

  2.   

    其中的AddDay($offset)函数是加天的,AbateDay($offset)函数是减天的
      

  3.   

    zxyufan(宇凡),你这个是一个函数库吧,
    好像不是一个类呀
    呵呵~~~~~~~~~~
      

  4.   

    计算当前日期50天后的日期:
    $now=time();
    $num=50;
    $dt=date("Y-m-d",$now+$num*24*3600);
    echo $dt;3个月后?不就是取出月份,+3,if>12,年+1
    $now=date("Y-m-d",time());
    $aa=explode("-",$now);
    $aa[1] +=3;
    if($aa[1]>12){
        $aa[1] -= 12;
        $aa[0]++;
    }
    $dt=implode("-",$aa);
      

  5.   

    呵呵~~~最近全在写java,张口闭口全都是类了~~:P准确的说,那应该是一个控制类,或者叫服务类吧~~