Formatar Integer como horas - Twig

212 views
Skip to first unread message

Cassiano Tartari

unread,
Mar 21, 2013, 9:42:07 AM3/21/13
to symfony-pt
Bom dia pessoal!

Alguém sabe como (se for possível) formatar um valor inteiro em h:m:s
? Sendo esse valor um inteiro. Terei que implementar uma função para isso? Se sim, alguma dica da função php para isso?

Valeu!

Jefferson Oliveira

unread,
Mar 21, 2013, 9:48:27 AM3/21/13
to symfo...@googlegroups.com
Cassiano,

pode explicar melhor pra galera? O valor inteiro que vc quer transformar já está em algum formato de hora? O formato de datetime UNIX, por exemplo, é inteiro e é possível transformá-lo tranquilamente para outros formatos.

Abraços,
--
Jeff
Skype: falecomjeff
http://twitter.com/botecodojeff


--
Você está recebendo esta mensagem porque se inscreveu no grupo "Symfony Brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para symfony-pt+...@googlegroups.com.
Para postar neste grupo, envie um e-mail para symfo...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/symfony-pt?hl=pt-BR.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 

Marcelo Rodrigues

unread,
Mar 21, 2013, 9:52:29 AM3/21/13
to symfo...@googlegroups.com
Qual o formato do valor "inteiro"? Um timestamp? Se sim, então basta usar a função date, passando como segundo argumento o "timestamp". 

// Usando a classe DateTime
$date = new \DateTime();
$date->setTimestamp($timestamp);
echo $date->format('h:i:s');

// Usando a funcao date
$date = date('h:i:s', $timestamp);

Marcelo


Em 21 de março de 2013 10:42, Cassiano Tartari <cassian...@gmail.com> escreveu:

Cassiano Tartari

unread,
Mar 21, 2013, 10:03:49 AM3/21/13
to symfony-pt
Desculpa galera, não especifiquei direito.

O valor é um integer que está armazenado no banco como int, mapeado como integer. Esse valor é o tempo em segundos. Queria apenas aplicar uma máscara pra transformá-lo em h:m:s

Aproveitando o tópico, outra máscara que precisaria também seria pra transformar um integer/int mesma coisa do de cima, só que em vez de tempo em Megabytes (MB) esse inteiro é a representacao do tamanho em KB

Valeu!

Cassiano Valle Tartari
MSc. Computer Engineer

Tel: +55.48.84474818
Email: fal...@cassianotartari.eng.br
Site: http://www.cassianotartari.eng.br

QR Code


2013/3/21 Marcelo Rodrigues <marcelo....@gmail.com>

Bernardo Alves

unread,
Mar 21, 2013, 10:13:20 AM3/21/13
to symfo...@googlegroups.com
acredito que o twig n tenha uma funçao pra isso.. se tu quer usar essa funçao no twig, o melhor é fazer em javascript mesmo!




Att,

Bernardo Alves





2013/3/21 Cassiano Tartari <cassian...@gmail.com>

Cassiano Tartari

unread,
Mar 21, 2013, 10:15:10 AM3/21/13
to symfony-pt
Se não me engano tem um jeito de registrar funções novas no twig, tenho que pesquisar. Mas de maneira rápida posso implentar essa função no objeto que passo pra ele processar.

Cassiano Valle Tartari
MSc. Computer Engineer

Tel: +55.48.84474818
Email: fal...@cassianotartari.eng.br
Site: http://www.cassianotartari.eng.br

QR Code


2013/3/21 Bernardo Alves <bernard...@gmail.com>

Ricardo Garcia

unread,
Mar 21, 2013, 10:18:52 AM3/21/13
to symfo...@googlegroups.com

Cassiano Tartari

unread,
Mar 21, 2013, 10:24:02 AM3/21/13
to symfony-pt
Valeu Ricardo!

Era exatamente isso que eu precisava!

Acabei de descobrir como transformar um inteiro de segundos em h:m:S, ex: gmdate("H:i:s", 60) função php

Só falta agora descobrir de inteiro pra MB!


Cassiano Valle Tartari
MSc. Computer Engineer

Tel: +55.48.84474818
Email: fal...@cassianotartari.eng.br
Site: http://www.cassianotartari.eng.br

QR Code


2013/3/21 Ricardo Garcia <ric...@gmail.com>

Ricardo Garcia

unread,
Mar 21, 2013, 10:26:31 AM3/21/13
to symfo...@googlegroups.com
Se o valor inteiro esta em KB, é só dividir por 1024 que passa a ser em MB.

Cassiano Tartari

unread,
Mar 21, 2013, 10:32:22 AM3/21/13
to symfony-pt
Isso se não passar depois pra GB, mas pelo que comentei ali seria isso mesmo.

Valeu de qualquer forma! Vou programar essas coisinhas.

Máscara pra um input text pra h:m:s daí só com javascript, mas tem alguma coisa pronta no symfony?

Cassiano Tartari

unread,
Mar 21, 2013, 12:14:33 PM3/21/13
to symfony-pt
Só pra complementar aqui a função de bytes pra KB, MB, GB, TB, achei na internet

function formatBytes($bytes, $precision = 2) { 
    $units = array('B', 'KB', 'MB', 'GB', 'TB'); 

    $bytes = max($bytes, 0); 
    $pow = floor(($bytes ? log($bytes) : 0) / log(1024)); 
    $pow = min($pow, count($units) - 1); 

    // Uncomment one of the following alternatives
    // $bytes /= pow(1024, $pow);
    // $bytes /= (1 << (10 * $pow)); 

    return round($bytes, $precision) . ' ' . $units[$pow]; 
} 


Cassiano Valle Tartari
MSc. Computer Engineer

Tel: +55.48.84474818
Email: fal...@cassianotartari.eng.br
Site: http://www.cassianotartari.eng.br

QR Code


2013/3/21 Cassiano Tartari <cassian...@gmail.com>

Thiago Rodrigues

unread,
Mar 21, 2013, 2:40:33 PM3/21/13
to symfo...@googlegroups.com
Não entendi muito bem o que você está fazendo, mas para formatar um timestamp (Unix) diretamente no Twig basta recorrer ao filtro date. Ele suporta qualquer formato que a função strotime suporta, bem como instâncias de DateTime e DateInterval.

Se precisar de algo a mais, como o pessoal já mencionou, terá que criar uma extensão.

Cassiano Tartari

unread,
Mar 21, 2013, 2:52:27 PM3/21/13
to symfony-pt
Resolvi criando a extensão Thiago. Tenho um twig que usa: {{ value|date('F j, Y') }}. Obrigado!

Mas nesse caso acho que é diferente. No banco não o campo que guarda o tempo em segundos não é nenhum datetime ou timestamp, é um int

Daí não tinha achado nada que formate um inteiro de segundos em horas, minutos e segundos.

Estou usando alguns bundles Sonata e acho que uma das funções que uso pra formatar data nos twigs vem dele, por exemplo:

Pra um datetime:
{{ value|format_date }}

Outro com data por extenso e horas em hh:mm
{{ value|format_datetime(null, null, null, constant('IntlDateFormatter::LONG'), constant('IntlDateFormatter::SHORT')) }}



Cassiano Valle Tartari
MSc. Computer Engineer

Tel: +55.48.84474818
Email: fal...@cassianotartari.eng.br
Site: http://www.cassianotartari.eng.br

QR Code


2013/3/21 Thiago Rodrigues <xth...@gmail.com>

Leandro Chaves

unread,
Mar 21, 2013, 3:58:27 PM3/21/13
to symfo...@googlegroups.com
Cassiano,
Apenas uma observação.
Timestamp é um int com uma contagem de segundos.

Cassiano Tartari

unread,
Mar 21, 2013, 4:03:39 PM3/21/13
to symfony-pt
Mas isso no banco, certo?

Me perdi agora...

O campo está assim:

    /**
     * @var integer
     *
     * @ORM\Column(name="duracao", type="integer", nullable=true)
     */
    protected $duracao;


Cassiano Valle Tartari
MSc. Computer Engineer

Tel: +55.48.84474818
Email: fal...@cassianotartari.eng.br
Site: http://www.cassianotartari.eng.br

QR Code


2013/3/21 Leandro Chaves <leandro...@gmail.com>

Thiago Rodrigues

unread,
Mar 22, 2013, 7:12:24 AM3/22/13
to symfo...@googlegroups.com
Entendi. Mas já tentou passar isso ai direto para o filtro date? Acredito que nesse caso o PHP consiga fazer o cast (conversão) automaticamente.

Thiago Rodrigues
http://xthiago.net/

Cassiano Tartari

unread,
Mar 22, 2013, 7:25:38 AM3/22/13
to symfony-pt
Como é que faz para usar o date pra gerar h:m:s ?

Assim: {{ value|date('H:i:s') }} o valor 2121 gera 21:35:21 quando deveria ser: 00:35:21

Em todo caso já está funcionando com a minha extensão, mas se existir não custa aprender pros próximos projetos.

Cassiano Valle Tartari
MSc. Computer Engineer

Tel: +55.48.84474818
Email: fal...@cassianotartari.eng.br
Site: http://www.cassianotartari.eng.br

QR Code


2013/3/22 Thiago Rodrigues <xth...@gmail.com>
Reply all
Reply to author
Forward
0 new messages