Ir para o conteúdo
DevilRocks92

Histórico do user

Mensagens Recomendadas

DevilRocks92    0
DevilRocks92

Boas,

eu estou a tentar fazer um historico para o user. E encontrei este codigo parecido com o que eu quero:

<?PHP

function time_since($original) {
    // array of time period chunks
    $chunks = array(
        array(60 * 60 * 24 * 365 , 'year'),
        array(60 * 60 * 24 * 30 , 'month'),
        array(60 * 60 * 24 * 7, 'week'),
        array(60 * 60 * 24 , 'day')
    );
    
    $today = time(); /* Current unix time  */
    $since = $today - $original;
    
    // $j saves performing the count function each time around the loop
    for ($i = 0, $j = count($chunks); $i < $j; $i++) {
        
        $seconds = $chunks[$i][0];
        $name = $chunks[$i][1];
        
        // finding the biggest chunk (if the chunk fits, break)
        if (($count = floor($since / $seconds)) != 0) {
            // DEBUG print "<!-- It's $name -->\n";
            break;
        }
    }
    
    $print = ($count == 1) ? '1 '.$name : "$count {$name}s";
    
    if ($i + 1 < $j) {
        // now getting the second item
        $seconds2 = $chunks[$i + 1][0];
        $name2 = $chunks[$i + 1][1];
        
        // add second item if it's greater than 0
        if (($count2 = floor(($since - ($seconds * $count)) / $seconds2)) != 0) {
            $print .= ($count2 == 1) ? ', 1 '.$name2 : ", $count2 {$name2}s";
        }
    }
    return $print;
}
$time = '1211373000';
echo time_since($time); 
?>

Mas o que eu quero é que me diga "Desde o dia xx/xx/xxxx até ao dia xx/xx/xxxx", se ainda estiver a decorrer "Desde o dia xx/xx/xxxx até hoje".

Alguem me pode ajudar?

Obrigado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
softklin    12
softklin

Para fazer o que pretendes, a tua função necessitava de 2 parâmetros, a data inicial e a data final. Se eventualmente a data final coincidisse com o dia de hoje, como está nessa função, poderias usá-la e modificar algumas coisas, mas pode não ser o caso. Contudo, podes usar algo do género:

function time_since($start, $end) {
  // extrair informações das timestamps
  $start = getdate($start);
  $end = getdate($end);
  $today = getdate();

  $startdate = $start['mday'] . '/' . $start['mon'] . '/' . $start['year'];
  
  $enddate = '';
  // verificar se a data final é de hoje
  if( $end['mday'] == $today['mday'] && $end['mon'] == $today['mon'] && $end['year'] == $today['year'] ){
    $enddate = 'hoje';
  } else {
    $enddate = 'ao dia '. $end['mday'] . '/' . $end['mon'] . '/' . $end['year'];
  }

  return sprintf('Desde o dia %s até %s', $startdate, $enddate);
}

Assumindo que os tempos $start e $end são dados como Unix Timestamps. A função retorna uma string para poderes fazer o que quiseres com ela, por exemplo, mostrá-la na página com o echo. Existem inúmeras maneiras de fazer isto, inclusive aproveitar as funções de data que o PHP oferece, tais como o date, strftime, strtotime, etc...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade