„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ą).


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


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)

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.


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 .


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.



-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ę.


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.