Formato "standard" per l'utilizzo di un timestamp come parte di un nome file [chiuso]

75

Ho cercato un formato standard per l'utilizzo di una data / ora come parte di un nome file e non è stato in grado di creare nulla.

La mia domanda è composta da due parti:

L'uso di indicatori di orario per imporre l'unicità nei nomi di file è una pratica sbagliata?

Potrei ottenere il tempo dalla data di creazione e serializzare i nomi dei file (file0001.bak, file0002.bak, ecc.) ma includere solo l'indicatore di data e ora consente di eseguire operazioni sui file come mv 2011-01* somewhere/ . C'è un lato negativo nell'usare questo tipo di sistema di denominazione?

Il formato che sto utilizzando è YYYY-mm-dd_HH-MM-SS .

C'è un formato migliore che dovrei usare?

Con questo formato dovrei preoccuparmi della compatibilità del file system, dei problemi str_to_date_parsing, ecc?

Grazie!

modifica:

Potrei aver voluto escludere il bit di unicità enforce poiché si tratta di un singolo utente che genera il backup utilizzando un cronjob (non dovrebbero esserci problemi di concorrenza).

    
posta kriegar 25.03.2011 - 00:43
fonte

6 risposte

53

Dovresti prendere in considerazione il formato ISO 8601 (2013-04-01T13: 01: 02). Sì, ci sono degli standard per queste cose. I due punti e i trattini possono essere omessi.

La stringa di formato che uso di solito è %Y%m%dT%H%M%S che fornisce 20130401T130102. A seconda delle esigenze, ometto i valori da sinistra. In uno script bash ottengo la data con una riga come:

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

Dipende dalla tua applicazione. A volte può essere utilizzato un timestamp come quello descritto. A volte, quando la collisione dei nomi è un problema, puoi utilizzare un generatore GUID .

    
risposta data 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?

No, va bene.

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

Numerarli in sequenza è più lavoro. Pensa al timestamp come una numerazione crescente ma non sequenziale.

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?

No, è sempre fatto.

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

Va bene, perché saranno ordinati in ordine cronologico. Vorrei perdere il carattere di sottolineatura, solo perché è più facile digitare un trattino.

Is there a better format I should be using?

Non proprio.

    
risposta data 25.03.2011 - 00:56
fonte
2

Il formato che stai usando va bene, ma se vuoi unicità e il tempo non ha altro significato, potresti avere un problema di concorrenza nell'applicazione se l'applicazione è utilizzata da più utenti nello stesso tempo e tutti causano la creazione di file nella stessa cartella. Se si desidera solo l'unicità, è possibile considerare la generazione di GUID e rimuovere qualsiasi carattere non valido come parentesi graffe e trattini e utilizzarlo come nome del file.

    
risposta data 25.03.2011 - 00:53
fonte
2

L'utilizzo del formato ISO 8601 consente anche di ordinare i file per data (presumendo che abbiano tutti lo stesso prefisso).

link
link

    
risposta data 25.03.2011 - 03:39
fonte
-3

L'FBI ha un "singolo" problema di utenti che esegue il backup di 100 milioni di impronte digitali di arresti criminali ricevute da tutte le forze dell'ordine ovunque ...

... iniziano con la data: yyyymmdd

Non so come continuano. Continuo con hhmm e per me lo fa.

L'uso di GMT / Zulu sembra un'ottima idea per una soluzione globale. Personalmente uso ET, e l'FBI "personalmente" usa ET anche perché è lì che hanno sede.

    
risposta data 12.12.2014 - 13:39
fonte

Leggi altre domande sui tag