A hora do Unix é dada como segundos desde a época : o número de segundos (sem contar os segundos bissextos) que têm passado desde 00:00:00 Hora Universal Coordenada (UTC) ou quinta-feira, 1 de janeiro de 1970,
O comando GNU date
possui alguns recursos muito interessantes que permitem a conversão entre diferentes formatos de hora. Isso é explicado muito bem em man date
, então só vou dar alguns exemplos aqui:
### "Normal" format
$ date
Thu Jun 12 11:44:23 CEST 2014
### Unix time
$ date +%s
1402566271
Para converter, você pode fornecer date
uma data específica usando o -d
flag. No entanto, para obter uma data Unix, isso precisa ser uma data completa. Não é possível converter as 3:00 PM para o horário Unix, pois o horário do Unix se refere a uma data inteira (ano, mês, dia, hora). Então, por exemplo, para obter a data do Unix para o dia 12 de setembro de 1987, você faria:
$ date -d "3 PM 12 September 1987" +%s
558450000
E para converter isso de volta para uma data "normal":
$ date -d "@558450000"
Sat Sep 12 15:00:00 CEST 1987