Como todos sabemos que "unix" pode ter qualquer coisa em um arquivo, exceto '/' e '\ 0', os administradores de sistemas, no entanto, tendem a ter uma preferência muito menor, principalmente devido a nada gostar de espaços como entrada ... e várias coisas tendo um significado especial para ':' e '@' entre outros.
Recentemente, vi outro caso em que um carimbo de data e hora era usado em um nome de arquivo e, depois de jogar um pouco com diferentes formatos para torná-lo "melhor", imaginei que tentaria encontrar uma "melhor prática", sem ver uma que eu imaginava. Gostaria de perguntar aqui e ver o que as pessoas pensavam.
Possíveis soluções "comuns" (p = prefixo es = sufixo):
syslog / logrotate / DNS como formato:
p-%Y%m%d-suffix = prefix-20110719-s p-%Y%m%d%H%M-suffix = prefix-201107191732-s p-%Y%m%d%H%M%S-suffix = prefix-20110719173216-s
profissionais:
- É "comum", então "bom o suficiente" pode ser melhor que "melhor".
- Sem personagens estranhos.
- Fácil de distinguir o "blob de data / hora" de todo o resto.
contras:
- A versão apenas para data não é fácil de ler, e incluir o tempo faz meus olhos sangrarem e segundos também são apenas "risos".
- Assume TZ.
Formato ISO-8601-
p-%Y-%m-%d-s = p-2011-07-19-s p-%Y-%m-%dT%H:%M%z-s = p-2011-07-19T17:32-0400-s p-%Y-%m-%dT%H:%M:%S%z-s = p-2011-07-19T17:32:16-0400-s p-%Y-%m-%dT%H:%M:%S%z-s = p-2011-07-19T23:32:16+0200-s
profissionais:
- Sem espaços.
- Leva TZ em consideração.
- Não é "ruim" para ser lido por humanos (a data é apenas v. Boa).
- Pode ser gerado por $ (data --iso = {horas, minutos, segundos})
contras:
- scp / tar / etc. não vai gostar dos caracteres ':'.
- Demora um pouco para as pessoas "normais" verem o WTF para o qual 'T' é, e para que servem as coisas no final :).
- Muitos caracteres '-'.
formato rfc-3339
p-%Y-%m-%d-s = p-2011-07-19-s p-%Y-%m-%d %H:%M%:z-s = p-2011-07-19 17:32-04:00-s p-%Y-%m-%d %H:%M:%S%:z-s = p-2011-07-19 17:32:16-04:00-s p-%Y-%m-%d %H:%M:%S%:z-s = p-2011-07-19 23:32:16+02:00-s
profissionais:
- Leva TZ em consideração.
- Pode ser facilmente lido por "todos os seres humanos".
- Pode distinguir data / hora do prefixo / sufixo.
- Algumas das opções acima podem ser geradas com $ (date --iso = {hours, seconds})
contras:
- Tem espaços nas versões temporais (o que significa que todo o código o odiará).
- scp / tar / etc. não vai gostar dos caracteres ':'.
Eu amo hífens:
p-%Y-%m-%d-s = p-2011-07-19-s p-%Y-%m-%d-%H-%M-s = p-2011-07-19-17-32-s p-%Y-%m-%d-%H-%M-%S-s = p-2011-07-19-23-32-16-s
profissionais:
- basicamente um syslog / etc ligeiramente melhor. variante.
contras:
- Muitos caracteres '-'.
- Assume TZ.
Eu amo hífens, com extensões:
p.%Y-%m-%d.s = p.2011-07-19.s p.%Y-%m-%d.%H-%M.s = p.2011-07-19.17-32.s p.%Y-%m-%d.%H-%M-%S.s = p.2011-07-19.23-32-16.s
profissionais:
- basicamente uma variante "Eu amo hífens" um pouco mais agradável.
- Sem personagens estranhos.
- Pode distinguir data / hora do prefixo / sufixo.
contras:
- Usando '.' aqui é um pouco não tradicional.
- Assume TZ.
... para que alguém queira dar uma preferência e uma razão, ou mais de uma (por exemplo, não se importe com a TZ se 95% + permanecer na máquina local, mas se importe muito se não for).
Ou, obviamente, algo que não está na lista acima.