php中的日期字符串美化不能按预期工作

时间:2012-02-12 22:05:26

标签: php date

function hace($fecha){
        //obtener la hora en formato unix
        $ahora=time()+3600;
        $fecha_unix = strtotime($fecha);
       // mostrar_notificacion($fecha_unix);
        //obtener la diferencia de segundos;
        $segundos=$ahora-$fecha_unix;

        //dias es la division de n segs entre 86400 segundos que representa un dia;
        $dias=floor($segundos/86400);
        $meses=floor($dias/30);
        $anyos = floor($meses/12);
        //mod_hora es el sobrante, en horas, de la division de días;
        $mod_hora=$segundos%86400;

        //hora es la division entre el sobrante de horas y 3600 segundos que representa una hora;
        $horas=floor($mod_hora/3600);

        //mod_minuto es el sobrante, en minutos, de la division de horas;
        $mod_minuto=$mod_hora%3600;

        //minuto es la division entre el sobrante y 60 segundos que representa un minuto;
        $minutos=floor($mod_minuto/60);

        if($horas<=0){
                return get_texto_clave('hace') ." ".$minutos." ".get_texto_clave('minutes')." " .get_texto_clave('a_go');
        }elseif($dias<=0){
                return get_texto_clave('hace') ." ".$horas." ".get_texto_clave('hours') ." ". get_texto_clave('and') ." ".$minutos." ".get_texto_clave('minutes');
        }elseif($dias>1 &&  $meses < 1){
                return get_texto_clave('hace') ." ".$dias." ".get_texto_clave('dias');
        }elseif($meses>=12){
                return get_texto_clave('hace') ." ".$meses." ".get_texto_clave('meses');
        }else{
                return get_texto_clave('hace') ." ".$anyos." ".get_texto_clave('anyos');

        }
}

你好,

我不明白为什么它只会返回:或者小时和分钟,或者几年,但总共0年(这是我得到的唯一两个回报),

像这样工作正常,但只考虑直到几天(所以如果帖子比今天更早,它只会显示,例如:866天一次)

function hace($fecha){
        //obtener la hora en formato unix
        $ahora=time()+3600;
        $fecha_unix = strtotime($fecha);
       // mostrar_notificacion($fecha_unix);
        //obtener la diferencia de segundos;
        $segundos=$ahora-$fecha_unix;

        //dias es la division de n segs entre 86400 segundos que representa un dia;
        $dias=floor($segundos/86400);

        //mod_hora es el sobrante, en horas, de la division de días;
        $mod_hora=$segundos%86400;

        //hora es la division entre el sobrante de horas y 3600 segundos que representa una hora;
        $horas=floor($mod_hora/3600);

        //mod_minuto es el sobrante, en minutos, de la division de horas;
        $mod_minuto=$mod_hora%3600;

        //minuto es la division entre el sobrante y 60 segundos que representa un minuto;
        $minutos=floor($mod_minuto/60);

        if($horas<=0){
                return get_texto_clave('hace') ." ".$minutos." ".get_texto_clave('minutes')." " .get_texto_clave('a_go');
        }elseif($dias<=0){
                return get_texto_clave('hace') ." ".$horas." ".get_texto_clave('hours') ." ". get_texto_clave('and') ." ".$minutos." ".get_texto_clave('minutes');
        }else{
                return get_texto_clave('hace') ." ".$dias." ".get_texto_clave('dias');

        }
}

我错过了什么?

1 个答案:

答案 0 :(得分:0)

正确的方法是获得年,月等的差异。在php docs的评论中是答案:http://www.php.net/manual/en/function.time.php#105257