Helmesvs 10 Denunciar post Postado Setembro 7, 2015 Pessoal estou fazendo um site de noticias e vou colocar la a hora e data de cada publicação. Se foi postado a alguns minutos ai aparece "a alguns minutos" se foi de hj que aparecesse "Hoje" caso fosse de outro dia que aparecesse o dia.. Se alguem souber como me ajude Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Setembro 7, 2015 O Carbon faz isso Veja como traduzir: https://blog.hernandev.com/pt/traducao-automatica-do-carbon Compartilhar este post Link para o post Compartilhar em outros sites
Helmesvs 10 Denunciar post Postado Setembro 7, 2015 Não estou conseguindo nem instalar ele. Com o Composer não conseguir, ai fiz sem ele so que ta faltando arquivos Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Setembro 7, 2015 Prefira usar o Composer. Ele baixará todas as dependências sem que você esquente a cabeça Veja http://rberaldo.com.br/composer-php/ Compartilhar este post Link para o post Compartilhar em outros sites
Helmesvs 10 Denunciar post Postado Setembro 7, 2015 Beraldo eu conseguir instalar aqui, e parabéns pelo artigo! Agora aquele sistema que eu to querendo tenho que faze-lo manualmente ou tem alguma forma mais pratica. Eu to meio perdido nisso Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Setembro 7, 2015 É só olhar os exemplos na documentação do Carbon. Funciona direitinho: $ php -a Interactive shell php > require 'vendor/autoload.php'; php > echo Carbon\Carbon::now()->subMinutes(2)->diffForHumans() . PHP_EOL; 2 minutes ago Compartilhar este post Link para o post Compartilhar em outros sites
Helmesvs 10 Denunciar post Postado Setembro 7, 2015 Vou ter que estudar muito pra conseguir entender tudo aquilo ainda Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Setembro 7, 2015 Tudo o quê? É só uma linha. Veja o que postei Uma linha faz o require do autoloader do Composer. A outra linha mostra a diferença de tempo Compartilhar este post Link para o post Compartilhar em outros sites
Helmesvs 10 Denunciar post Postado Setembro 7, 2015 Nossa agora caiu a ficha. Então eu so terei que mudar o valor dentro do subMinutes(2). Como eu passaria o valor do $linha['datahora'] para lá? Compartilhar este post Link para o post Compartilhar em outros sites
Helmesvs 10 Denunciar post Postado Setembro 7, 2015 Eu sei que so poderia colocar la dentro, mas não vai da muito certo com a hr e data misturada. Acho que teria que transforma a data em segundos, ou algo assim. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Setembro 7, 2015 Você deve adaptar ao seu caso. O exemplo era subtrair dois minutos da data atual. O seu caso é uma diferença entre datas. Isso é abordado aqui na documentação oficial do Carbon Lembrando que o Carbon é uma extensão da classe DateTime. Ou seja, tudo que ela faz, o Carbon faz igual Compartilhar este post Link para o post Compartilhar em outros sites
Helmesvs 10 Denunciar post Postado Setembro 8, 2015 $data_atual = Carbon::createFromDate(2000, 1, 1, 'America/Toronto'); $data_post = Carbon::createFromDate(2000, 1, 1, 'America/Vancouver'); echo $data_atual->diffInHours($data_post); Peguei esse exemplo la e tentei adaptar aqui, mas ainda nao estou conseguindo. Nao consigo achar uma forma de colocar a variavel $linha['datahora'] pra fazer a diferença com a hr atual. E tenho uma duvida, o 'America/Toronto' eu mudaria pra Brazil? Sendo que lá é -4 Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Setembro 8, 2015 Você precisa do diffForHumans, pelo que entendi veja: $date1 = new Carbon('2015-09-07 10:00:00'); $date2 = new Carbon('2015-09-07 12:30:00'); var_dump($date1->diffForHumans($date2)); Use "America/Sao_Paulo". Veja o timezones: http://php.net/manual/pt_BR/timezones.php Compartilhar este post Link para o post Compartilhar em outros sites
Helmesvs 10 Denunciar post Postado Setembro 8, 2015 É justamente ai que não to conseguindo, eu recebo o valor da data e hora por essa variavel $linha['datahora'] Mas não sei como colocar os valores dela pra comparação. Do jeito que você fez ai eu tinha conseguido aqui, mas na hr de usar essa variável invés do valor ja predefinido, que eu tenho dificuldade. E tbm queria saber como pegar a hora atual, porq eu usei o now mas ta vindo 5 hrs a mais se nao me engano Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Setembro 8, 2015 É justamente ai que não to conseguindo, eu recebo o valor da data e hora por essa variavel $linha['datahora'][/size] Mas não sei como colocar os valores dela pra comparação. Do jeito que você fez ai eu tinha conseguido aqui, mas na hr de usar essa variável invés do valor ja predefinido, que eu tenho dificuldade. Leia os links que mando. Eu mesmo escrevi aqui que o Carbon é uma extensão do DateTime. Ou seja, basta passar a data desejada no construtor: $date = new Carbon('2015-09-08'); // ou $date = new Carbon($variavel_com_a_data); Veja: http://carbon.nesbot.com/docs/#api-instantiation E tbm queria saber como pegar a hora atual, porq eu usei o now mas ta vindo 5 hrs a mais se nao me engano Basta ajustar o Timezone Compartilhar este post Link para o post Compartilhar em outros sites
Helmesvs 10 Denunciar post Postado Setembro 8, 2015 Eu sempre leio os links que manda, mas ainda to no começo da programação. Conheço a linguagem a 3 meses e so mecho nas hrs vagas. Por isso tenho tanta dificuldade. Mas enfim eu conseguir fazer aqui, ficou assim: <?php Carbon::setLocale('pt_BR'); setlocale(LC_ALL, 'pt_BR', 'pt_BR.utf-8', 'pt_BR.utf-8', 'portuguese'); date_default_timezone_set('America/Sao_Paulo'); $date1 = Carbon::now('America/Sao_Paulo'); $date2 = new Carbon($linha['datahora']); echo ($date2->diffForHumans($date1)); ?> Mas invés de me retorna "Há 5 horas", esta me retornando "5 horas antes". Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Setembro 8, 2015 Tudo isso explicado aqui: This method will add a phrase after the difference value relative to the instance and the passed in instance. There are 4 possibilities: When comparing a value in the past to default now:1 hour ago5 months ago When comparing a value in the future to default now:1 hour from now5 months from now When comparing a value in the past to another value:1 hour before5 months before When comparing a value in the future to another value:1 hour after5 months after Fonte: http://carbon.nesbot.com/docs/#api-humandiff Ou seja, se comparar duas datas, mostrará "x horas antes". Se comparar com a data corrente, mostrará "há X horas". Isso porque "há X horas" só pode ser em relação à hora atual. Se for entre duas datas fixas, tem que dizer 'antes' ou 'depois', não 'há'. É uma questão semântica Faça o teste: $date1 = Carbon::now('America/Sao_Paulo'); $date2 = new Carbon('2015-09-08 07:00:00'); var_dump($date2->diffForHumans($date1)); var_dump($date2->diffForHumans()); saída: string(13) "6 horas antes"string(11) "há 6 horas" Compartilhar este post Link para o post Compartilhar em outros sites
Helmesvs 10 Denunciar post Postado Setembro 8, 2015 Tudo isso explicado aqui: Fonte: http://carbon.nesbot.com/docs/#api-humandiff Ou seja, se comparar duas datas, mostrará "x horas antes". Se comparar com a data corrente, mostrará "há X horas". Isso porque "há X horas" só pode ser em relação à hora atual. Se for entre duas datas fixas, tem que dizer 'antes' ou 'depois', não 'há'. É uma questão semântica Faça o teste: $date1 = Carbon::now('America/Sao_Paulo'); $date2 = new Carbon('2015-09-08 07:00:00'); var_dump($date2->diffForHumans($date1)); var_dump($date2->diffForHumans()); saída: Ficou perfeito. Muito obrigado Beraldo! Compartilhar este post Link para o post Compartilhar em outros sites