Parece que você pode fazer vários formatos usando a mudança para a implementação GNU de date
(versão 5.90 ou superior), --rfc3339=
.
Exemplos
$ date --rfc-3339=date
2014-03-19
$ date --rfc-3339=seconds
2014-03-19 18:00:05-04:00
$ date --rfc-3339=ns
2014-03-19 18:00:08.179780629-04:00
Se você quiser que o T
seja adicionado, como um hack:
$ date --rfc-3339=seconds | sed 's/ /T/'
2014-03-19T18:35:03-04:00
Se você quiser em milissegundos:
$ date --rfc-3339=ns | sed 's/ /T/; s/\(\....\).*-/-/g'
2014-03-19T18:42:52.362-04:00