Formato "padrão" para usar um registro de data e hora como parte de um nome de arquivo [fechado]

85

Procurei um formato padrão para usar uma data / hora como parte de um nome de arquivo e não consegui encontrar nada.

Minha pergunta é de duas partes:

Está usando carimbos de hora para aplicar exclusivo em nomes de arquivos uma má prática?

Eu poderia obter o horário a partir da data de criação e serializar os nomes dos arquivos (file0001.bak, file0002.bak, etc), mas apenas incluir o registro de data e hora permite executar operações de arquivo como mv 2011-01* somewhere/. Existe uma desvantagem em usar esse tipo de sistema de nomes?

O formato que estou usando é YYYY-mm-dd_HH-MM-SS.

Existe um formato melhor que eu deveria estar usando?

Com este formato, eu deveria me preocupar com a compatibilidade do sistema de arquivos, preocupações com str_to_date_parsing, etc?

Obrigado!

editar:

Talvez eu queira deixar de fora o bit exclusivo de imposição, pois é um único usuário que gera backup usando um cronjob (não deve haver problemas de simultaneidade).

kriegar
fonte
9
Geralmente, eu apenas uso YYYYmmddHHMMSS e, em seguida, ele pode ser classificado / filtrado numericamente ou lexicamente.
Orbling 25/03
Eu uso "aaaa mmdd hhmm". Minha empresa tem alcance global, por isso, estimo o horário usando GMT. Então, enquanto escrevo isso, seria "2011 0325 0245", porque é a hora de Londres agora (e eles ainda estão no horário padrão no momento). Se eu quiser especificar a hora local, que é a Hora do Leste para mim, usaria "aaaa mmdd hhmm ET".
quer
Uso segundos desde a época para não precisar lidar com fusos horários, pular o ano e o horário de verão. Também facilita a matemática da data / hora.
dietbuddha
1
Veja também: serverfault.com/questions/292014/…
Zero3 13/06
2
Proponho um formato baseado em ISO 8601 em um post no blog.xam.de/2016/07/... - iria tornar o nosso mundo mais fácil, se pudéssemos chegar a acordo sobre um :-) formato
Dr. Max Völkel

Respostas:

62

Você deve considerar o formato ISO 8601 (2013-04-01T13: 01: 02). Sim, existem padrões para essas coisas. Os dois pontos e hífens podem ser omitidos.

A string de formato que eu costumo usar está %Y%m%dT%H%M%Sproduzindo 20130401T130102. Dependendo dos requisitos, omito os valores da esquerda. Em um script bash, recebo a data com uma linha como:

LOGDATE=$(date +%Y%m%dT%H%M%S)
BillThor
fonte
32
Os dois pontos certamente precisarão ser omitidos se você estiver em um sistema Windows, pois eles são ilegais em um nome de arquivo!
Carson63000
2
Para aqueles que usam strftime, a cadeia de formato é"%Y-%m-%dT%H:%M:%S%z"
Alec Jacobson
6
Eu uso YYYY-MM-DD-HHMMSS(eu posso omitir o SSem alguns casos). A parte da data é bastante legível e a parte da hora é legível o suficiente para a maioria dos propósitos.
Keith Thompson
15
Padrão ou não, "20130401T1301102" não é muito fácil de usar. Meus olhos doem quando vejo arquivos de log de software com esse tipo de carimbo de data / hora em seus nomes.
Zero3
1
2019.04.01-13.01.02.JPGou nomes semelhantes (por exemplo 190401-130102.JPG:) são muito melhores para os olhos. @ Zero3
S.Serpooshan
4

Procurei um formato padrão para usar uma data / hora como parte de um nome de arquivo e não consegui encontrar nada.

Minha pergunta é de duas partes:

O uso de um carimbo de data / hora para impor nomes de arquivos exclusivos é uma prática ruim?

Não, está bem.

Eu poderia obter o horário a partir da data de criação e serializar os nomes dos arquivos (file0001.bak, file0002.bak, etc)

Numerá-los sequencialmente é mais trabalho. Pense no registro de data e hora como uma numeração crescente, mas não seqüencial.

mas apenas incluir o registro de data e hora permite executar operações de arquivo como mv 2011-01 * em algum lugar /. Existe uma desvantagem em usar esse tipo de sistema de nomes?

Não, é feito o tempo todo.

O formato que estou usando é AAAA-mm-dd_HH-MM-SS.

Isso é bom, porque eles serão classificados em ordem cronológica. Eu perderia o sublinhado, apenas porque é mais fácil digitar um hífen.

Existe um formato melhor que eu deveria estar usando?

Na verdade não.

Kevin Cline
fonte
2
Eu diria "Use um formato de hora padrão ISO". Então, AAAA-mm-ddTHH: MM: SS (ou aaaammddTHHMMSS).
Vatine 25/03
3

Depende da sua aplicação. Às vezes, um carimbo de data e hora como o que você descreveu pode ser usado. Às vezes, quando a colisão de nomes é uma preocupação, você pode usar um gerador de GUID .

grokus
fonte
2

O formato que você está usando é bom, mas se você quiser exclusividade e o horário não tiver outro significado, poderá haver um problema de simultaneidade no aplicativo se o aplicativo for usado por vários usuários ao mesmo tempo e todos causarem a criação de arquivos no mesmo pasta. Se você deseja apenas exclusividade, considere a geração de GUID e a remoção de caracteres inválidos, como chaves e traços, e use-o como o nome do arquivo.

M.Sameer
fonte
-3

O FBI tem um problema "único" de fazer backup de 100 milhões de impressões digitais de prisão criminal que eles recebem de toda a polícia em todos os lugares ...

... eles começam com a data: aaaammdd

Não sei como eles continuam. Eu continuo com hhmm e para mim faz isso.

Usar o GMT / Zulu parece uma excelente idéia para uma solução global. Pessoalmente, eu uso ET, e o FBI "pessoalmente" também usa ET, já que é onde eles estão sediados.

Dave
fonte
3
Isso não adiciona nada à discussão muito mais geral nas outras postagens, que realmente abordam aspectos como caracteres legais e classificação e singularidade.
Martijn Pieters