Formato “padrão” para usar um timestamp como parte de um nome de arquivo [closed]

75

Eu procurei por 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 carimbos para impor exclusivos em nomes de arquivos é uma prática ruim?

Eu poderia obter o tempo a partir da data de criação e serializar os nomes de arquivo (file0001.bak, file0002.bak, etc), mas apenas incluindo o carimbo de data / hora permite realizar 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 devo me preocupar com a compatibilidade do sistema de arquivos, com as preocupações str_to_date_parsing, etc?

Obrigado!

editar:

Eu poderia ter deixado de fora o bit de unicidade enforce , já que é um único usuário gerando backup usando um cronjob (não deve haver nenhum problema de simultaneidade).

    
por kriegar 25.03.2011 / 00:43
fonte

6 respostas

53

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 geralmente uso é %Y%m%dT%H%M%S , resultando em 20130401T130102. Dependendo dos requisitos, omito os valores da esquerda. Em um script bash eu recebo a data com uma linha como:

LOGDATE=$(date +%Y%m%dT%H%M%S)
    
por 25.03.2011 / 02:30
fonte
3

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

    
por 25.03.2011 / 00:52
fonte
3

I searched for a standard format for using a date/time as part of a file name and was unable to come up with anything.

My question is two parts:

Is using a time stamp to enforce unique file names a poor practice?

Não, tudo bem.

I could get the time from the creation date and serialize the file names (file0001.bak, file0002.bak, etc)

Numerá-los sequencialmente é mais trabalho. Pense no timestamp como uma numeração crescente, mas não sequencial.

but just including the time stamp lets perform file operations such as mv 2011-01* somewhere/. Is there a downside to using this type of naming system?

Não, é feito o tempo todo.

The format I am using is YYYY-mm-dd_HH-MM-SS.

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

Is there a better format I should be using?

Não realmente.

    
por 25.03.2011 / 00:56
fonte
2

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

    
por 25.03.2011 / 00:53
fonte
2

O uso do formato ISO 8601 também permite classificar os arquivos por data (presumindo que todos tenham o mesmo prefixo).

link
link

    
por 25.03.2011 / 03:39
fonte
-3

O FBI tem um problema de usuário "único" de fazer o backup de 100 milhões de impressões digitais de detenções criminais que recebem de todos os policiais em todos os lugares ...

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

Eu não sei como eles continuam. Eu continuo com hhmm e para mim isso acontece.

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

    
por 12.12.2014 / 13:39
fonte