Estou recebendo dados de um database e exibindo-o:
- {{item.date}}
Onde {{item.date}}
é uma data Unix como 1374843600. Como posso definir o formato de data usando diretivas AngularJS? É possível?
Quando tentei fazer isso, recebi um valor de tag mydate – {{item.date}}
Use o date filter
formato como este:
{{item.date * 1000 | date:'yyyy-MM-dd HH:mm:ss Z'}}
Referência
Eu enfrentei o problema com o tempo unix formatado como um número de segundos desde o início da época ou como um número de milissegundos que é usado em JavaScript. Então, estritamente falando, o AngularJS não converte o timestamp Unix para Date, mas um número com milissegundos, que é 1000 vezes maior, então primeiro você terá que multiplicar seu número de input por 1000, assim:
{{item.date * 1000 | date:'yyyy-MM-dd HH:mm:ss Z'}}
Caso contrário, sua data estará errada.
Se você tiver um timestamp do Unix, provavelmente precisará multiplicar seu timestamp por 1.000, já que o timestamp do Unix está em segundos e o filtro de data do AngularJs precisa de milissegundos.
vm.milliseconds = Date('1441981121' * 1000);
então use a function $ filter ()
var date = $filter('date')(vm.milliseconds, 'd MMMM yyyy');
ou você pode usar em ng-bind
Você deve usar o filtro de data que já é fornecido pelo angular: aqui
yourapp.filter('timestampToDate', function () { return function (timestamp) { var date = new Date(timestamp * 1000); var dateObject = date.getFullYear() +'/'+ ('0' + (date.getMonth() + 1)).slice(-2) +'/'+ ('0' + date.getDate()).slice(-2); return dateObject; }; });
Uso:
{{timestamp | timestampToDate}}
Existe uma diretiva para o chamado rsTime.
Verifique a demonstração no Plunker .
Abaixo estão os diferentes formatos de tempo:
M/d/y - 11/7/2016 HH:mm:ss - 16:02:31 (24hrs formate) hh:mm:ss TT - 04:03:10 PM ddd MMM dh:mm TT - Mon Nov 7 at 4:04 PM
Para documentação, visite o Github