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


85

Ho cercato un formato standard per utilizzare una data / ora come parte del nome di un file e non sono riuscito a trovare nulla.

La mia domanda è divisa in due parti:

Sta usando i timestamp per imporre unicità nei nomi dei file una cattiva pratica?

Potrei ottenere il tempo dalla data di creazione e serializzare i nomi dei file (file0001.bak, file0002.bak, ecc.) Ma l'inclusione del timestamp consente di eseguire operazioni sui file come mv 2011-01* somewhere/. C'è un aspetto negativo nell'utilizzo di questo tipo di sistema di denominazione?

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

Esiste un formato migliore che dovrei usare?

Con questo formato dovrei preoccuparmi della compatibilità del file system, delle preoccupazioni di str_to_date_parsing, ecc.?

Grazie!

modificare:

Potrei aver voluto tralasciare il bit di imposizione dell'unicità poiché è un singolo utente che genera backup utilizzando un cronjob (non dovrebbero esserci problemi di concorrenza).


9
In genere, utilizzo solo AAAAMMGGHHMSS, quindi può essere ordinato / filtrato numericamente o lessicamente.
Orbling

Uso "yyyy mmdd hhmm". La mia azienda ha una portata globale, quindi timestamp con GMT. Quindi, mentre scrivo questo, sarebbe "2011 0325 0245", perché quello è il momento a Londra in questo momento (e sono ancora in orario standard al momento). Se voglio specificare l'ora locale, che è l'ora orientale per me, allora userei "yyyy mmdd hhmm ET".
Mike Rosenblum,

Uso i secondi dall'epoca, quindi non devo occuparmi di fusi orari, anno bisestile e risparmio di luce del giorno. Inoltre semplifica la matematica di data / ora.
dietbuddha,


2
Propongo un formato basato su ISO 8601 in un post su blog.xam.de/2016/07/… - renderebbe il nostro mondo più semplice, se potessimo essere d'accordo su un formato :-)
Dr. Max Völkel,

Risposte:


62

È necessario considerare il formato ISO 8601 (2013-04-01T13: 01: 02). Sì, ci sono standard per queste cose. I due punti e trattini possono essere omessi.

La stringa di formato che di solito uso sta %Y%m%dT%H%M%Sproducendo 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)

32
I due punti dovranno sicuramente essere omessi se si utilizza un sistema Windows, poiché sono illegali in un nome file!
Carson63000,

2
Per coloro che usano strftime, la stringa del formato è"%Y-%m-%dT%H:%M:%S%z"
Alec Jacobson,

6
Uso YYYY-MM-DD-HHMMSS(potrei omettere SSin alcuni casi). La parte della data è abbastanza leggibile e la parte del tempo è abbastanza leggibile per la maggior parte degli scopi.
Keith Thompson,

15
Standard o no, "20130401T1301102" non è molto intuitivo. Mi fanno male gli occhi quando vedo i file di registro del software con questo tipo di timestamp nei loro nomi.
Zero3,

1
2019.04.01-13.01.02.JPGo nomi simili (ad esempio 190401-130102.JPG:) sono poltiglia meglio per gli occhi. @ Zero3
S.Serpooshan il

4

Ho cercato un formato standard per utilizzare una data / ora come parte del nome di un file e non sono riuscito a trovare nulla.

La mia domanda è divisa in due parti:

L'uso di un timestamp per imporre nomi di file univoci è una pratica inadeguata?

No, va bene.

Potrei ottenere il tempo dalla data di creazione e serializzare i nomi dei file (file0001.bak, file0002.bak, ecc.)

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

ma solo l'inclusione del timestamp consente di eseguire operazioni sui file come mv 2011-01 * da qualche parte /. C'è un aspetto negativo nell'utilizzo di questo tipo di sistema di denominazione?

No, è sempre fatto.

Il formato che sto usando è AAAA-mm-gg_HH-MM-SS.

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

Esiste un formato migliore che dovrei usare?

Non proprio.


2
Direi "Usa un formato orario ISO standard". Quindi, YYYY-mm-ddTHH: MM: SS (o yyyymmddTHHMMSS).
Vatine,

3

Dipende dalla tua applicazione. A volte può essere usato un timestamp come quello che hai descritto. A volte quando la collisione dei nomi è un problema è possibile utilizzare un generatore GUID .


2

Il formato che stai utilizzando va bene, ma se desideri l'univocità e il tempo non ha altri significati, potresti avere problemi di concorrenza nella tua applicazione se l'applicazione viene utilizzata da più utenti contemporaneamente e tutti causano la creazione di file nella stessa cartella. Se si desidera solo unicità, è possibile prendere in considerazione la generazione di GUID e la rimozione di caratteri non validi come parentesi graffe e trattini e utilizzarlo come nome del file.



-3

L'FBI ha un "singolo" problema utente di eseguire il backup di 100 milioni di impronte digitali di arresto criminale che ricevono da tutta la polizia ovunque ...

... iniziano con la data: yyyymmdd

Non so come continuino. 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.


3
Ciò non aggiunge nulla alla discussione molto più generale negli altri post, che in realtà tocca aspetti come i caratteri legali, l'ordinamento e l'unicità.
Martijn Pieters,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.