„Standardowy” format używania znacznika czasu jako części nazwy pliku [zamknięty]

85

Szukałem standardowego formatu do używania daty / godziny jako części nazwy pliku i nie byłem w stanie nic wymyślić.

Moje pytanie składa się z dwóch części:

Używa znaczników czasu egzekwować unikalne w nazwach plików zła praktyka?

Mógłbym uzyskać czas od daty utworzenia i serializować nazwy plików (file0001.bak, file0002.bak itp.), Ale po prostu wraz ze znacznikiem czasu pozwala wykonywać operacje na plikach, takie jak mv 2011-01* somewhere/. Czy korzystanie z tego rodzaju systemu nazewnictwa ma jakąś wadę?

Format, którego używam to YYYY-mm-dd_HH-MM-SS.

Czy jest lepszy format, którego powinienem używać?

Czy w tym formacie należy zwracać uwagę na kompatybilność systemu plików, str_to_date_parsing itp.?

Dzięki!

edytować:

Mógłbym chcieć pominąć bit wymuszenia unikatowości, ponieważ jest to pojedynczy użytkownik generujący kopię zapasową przy użyciu usługi współdziałania (nie powinno być żadnych problemów z współbieżnością).

kriegar
źródło
9
Ogólnie używam po prostu YYYYmmddHHMMSS, a następnie można je sortować / filtrować numerycznie lub leksykalnie.
Orbling
Używam „rrrr mmdd hhmm”. Moja firma ma globalny zasięg, dlatego używam GMT. Tak więc, kiedy to piszę, będzie to „2011 0325 0245”, ponieważ teraz jest to czas w Londynie (i wciąż są na standardowym czasie). Jeśli chcę podać czas lokalny, który jest dla mnie czasem wschodnim, użyłbym „rrrr mmdd hhmm ET”.
Mike Rosenblum,
Używam sekund od epoki, więc nie muszę radzić sobie ze strefami czasowymi, rokiem oszczędnościowym i oszczędnością światła dziennego. Ułatwia również matematykę daty i godziny.
dietbuddha
1
Zobacz także: serverfault.com/questions/292014/…
Zero3
2
Proponuję format oparty na ISO 8601 w poście na blog.xam.de/2016/07/... - ułatwiłby nasz świat, gdybyśmy mogli uzgodnić format :-)
Dr. Max Völkel

Odpowiedzi:

62

Należy wziąć pod uwagę format ISO 8601 (2013-04-01T13: 01: 02). Tak, istnieją standardy dla tych rzeczy. Okrężnice i łączniki można pominąć.

Ciąg formatu, którego zwykle używam, %Y%m%dT%H%M%Sdaje 20130401T130102. W zależności od wymagań pomijam wartości z lewej strony. W skrypcie bash otrzymuję datę z linią:

LOGDATE=$(date +%Y%m%dT%H%M%S)
BillThor
źródło
32
Dwukropki z pewnością będą musiały zostać pominięte, jeśli korzystasz z systemu Windows, ponieważ w nazwie pliku są one nielegalne!
Carson63000,
2
Dla osób używających strftime, ciąg formatu to"%Y-%m-%dT%H:%M:%S%z"
Alec Jacobson
6
Używam YYYY-MM-DD-HHMMSS( SSw niektórych przypadkach mogę pominąć ). Część daty jest dość czytelna, a część czasu jest wystarczająco czytelna dla większości celów.
Keith Thompson
15
Standardowo czy nie, „20130401T1301102” nie jest bardzo przyjazny dla użytkownika. Bolą mnie oczy, gdy widzę logi oprogramowania z takimi znacznikami czasu w ich nazwach.
Zero3
1
2019.04.01-13.01.02.JPGlub podobne nazwy (np . 190401-130102.JPG:) są lepkie dla oczu. @ Zero3
S.Serpooshan
4

Szukałem standardowego formatu do używania daty / godziny jako części nazwy pliku i nie byłem w stanie nic wymyślić.

Moje pytanie składa się z dwóch części:

Czy stosowanie znacznika czasu do wymuszania unikatowych nazw plików jest złym postępowaniem?

Nie, w porządku.

Mogę uzyskać czas od daty utworzenia i serializować nazwy plików (file0001.bak, file0002.bak itp.)

Kolejne numerowanie to więcej pracy. Pomyśl o znaczniku czasu jako o rosnącej, ale niesekwencyjnej numeracji.

ale samo dodanie znacznika czasu pozwala wykonywać operacje na plikach, takie jak mv 2011-01 * gdzieś /. Czy korzystanie z tego rodzaju systemu nazewnictwa ma jakąś wadę?

Nie, robi się to cały czas.

Używam formatu RRRR-mm-dd_HG-MM-SS.

To dobrze, ponieważ będą sortować w porządku chronologicznym. Straciłbym podkreślenie tylko dlatego, że łatwiej jest wpisać myślnik.

Czy jest lepszy format, którego powinienem używać?

Nie całkiem.

Kevin Cline
źródło
2
Powiedziałbym „Użyj standardowego formatu czasu ISO”. Tak więc RRRR-mm-ddTHH: MM: SS (lub rrrrmmddTHHMMSS).
Vatine
3

To zależy od twojej aplikacji. Czasami można użyć znacznika czasu takiego jak opisany. Czasami, gdy kolizja nazw jest problemem, możesz użyć generatora GUID .

grokus
źródło
2

Format, którego używasz, jest w porządku, ale jeśli chcesz wyjątkowości, a czas nie ma innego znaczenia, możesz mieć problem z współbieżnością w aplikacji, jeśli aplikacja jest używana przez wielu użytkowników w tym samym czasie i wszystkie one powodują, że pliki są tworzone w tym samym teczka. Jeśli chcesz tylko wyjątkowości, możesz rozważyć wygenerowanie identyfikatora GUID i usunięcie wszelkich nieprawidłowych znaków, takich jak nawiasy klamrowe i myślniki, i użycie go jako nazwy pliku.

M.Sameer
źródło
-3

FBI ma problem „jednego użytkownika”, polegający na utworzeniu kopii zapasowych 100 milionów odcisków palców aresztowań kryminalnych, które otrzymują od całej policji na całym świecie ...

... zaczynają się od daty: rrrrmmdd

Nie wiem jak oni kontynuują. Kontynuuję z hhmm i dla mnie to robi.

Korzystanie z GMT / Zulu wydaje się być doskonałym pomysłem na globalne rozwiązanie. Ja osobiście używam ET, a FBI „osobiście” również używa ET, ponieważ tam właśnie mają swoją siedzibę.

Dave
źródło
3
Nie dodaje to niczego do znacznie bardziej ogólnej dyskusji w innych postach, która faktycznie dotyczy takich aspektów, jak postacie prawne oraz sortowanie i niepowtarzalność.
Martijn Pieters,