"Стандартний" формат для використання часової позначки як частини імені файлу [закрито]


85

Я шукав стандартний формат для використання дати / часу як частини імені файлу, і нічого не міг придумати.

Моє запитання складається з двох частин:

Використовує часові позначки застосовувати унікальні у назвах файлів погана практика?

Я міг отримати час від дати створення та серіалізувати імена файлів (file0001.bak, file0002.bak тощо), але тільки включаючи часову марку, можна виконувати такі файлові операції, як mv 2011-01* somewhere/. Чи є недолік використання цього типу іменних систем?

Я використовую формат YYYY-mm-dd_HH-MM-SS.

Чи є кращий формат, який я повинен використовувати?

Чи маю я стосуватися цього формату щодо сумісності файлової системи, проблеми str_to_date_parsing тощо?

Дякую!

редагувати:

Я, можливо, хотів би залишити біт примусової унікальності, оскільки це єдиний користувач, який генерує резервну копію за допомогою cronjob (проблем із одночасністю не повинно бути).


9
Як правило, я просто використовую YYYYmmddHHMMSS, тоді його можна сортувати / фільтрувати чисельно чи лексично.
Орблінг

Я використовую "yyyy mmdd hhmm". Моя фірма має глобальний обсяг, тому я використовую штамп часу за допомогою GMT. Тому, коли я це пишу, це було б "2011 0325 0245", тому що саме зараз в Лондоні (і на даний момент вони все ще в стандартний час). Якщо я хочу вказати за місцевим часом, який для мене є східним часом, то я б використав "yyyy mmdd hhmm ET".
Майк Розенблум

З епохи я використовую секунди, тому мені не доводиться мати справу з часовими поясами, високосвітньою економією року та дня. Також полегшує математику дати / часу.
дієтабудда

1
Дивіться також: serverfault.com/questions/292014/…
Zero3

2
Я пропоную формат, заснований на ISO 8601, у публікації на blog.xam.de/2016/07/… - полегшив би наш світ, якби ми могли домовитись про формат :-)
Доктор Макс Вьолкель,

Відповіді:


62

Вам слід врахувати формат ISO 8601 (2013-04-01T13: 01: 02). Так, для цих речей є стандарти. Колони та дефіси можуть бути опущені.

Рядок формату, який я зазвичай використовую, %Y%m%dT%H%M%Sдає 20130401T130102. Залежно від вимог я опускаю значення зліва. У сценарії bash я отримую дату з таким рядком:

LOGDATE=$(date +%Y%m%dT%H%M%S)

32
Колони, безумовно, доведеться опустити, якщо ви користуєтесь системою Windows, оскільки вони є незаконними у назви файлу!
Carson63000

2
Для тих, хто використовує стропінг, рядок формату"%Y-%m-%dT%H:%M:%S%z"
Alec Jacobson

6
Я використовую YYYY-MM-DD-HHMMSS( SSу деяких випадках я можу пропустити ). Частина дати досить читабельна, а часова частина читається достатньо для більшості цілей.
Кіт Томпсон

15
Стандартно чи ні, "20130401T1301102" не дуже зручний для користувачів. Мені болять очі, коли я бачу програмні логіни з такими позначками часу у своїх назвах.
Нуль3

1
2019.04.01-13.01.02.JPGабо подібні назви (наприклад 190401-130102.JPG:) краще для очей. @ Zero3
S.Serpooshan

4

Я шукав стандартний формат для використання дати / часу як частини імені файлу, і нічого не міг придумати.

Моє запитання складається з двох частин:

Чи погана практика використання позначки часу для застосування унікальних імен файлів?

Ні, це добре.

Я міг отримати час від дати створення та серіалізувати імена файлів (file0001.bak, file0002.bak тощо)

Нумерація їх послідовно - це більше роботи. Подумайте про часову позначку як про зростаючу, але не послідовну нумерацію.

але лише включення позначки часу дозволяє виконувати файлові операції, такі як mv 2011-01 * десь /. Чи є недолік використання цього типу системи імен?

Ні, це робиться постійно.

Формат, який я використовую, - РРРР-мм-dd_HH-MM-SS.

Це добре, адже вони будуть сортувати в хронологічному порядку. Я б втратив підкреслення лише тому, що простіше набрати дефіс.

Чи є кращий формат, який я повинен використовувати?

Не зовсім.


2
Я б сказав "Використовувати стандартний формат часу ISO". Отже, YYYY-mm-ddTHH: MM: SS (або yyyymmddTHHMMSS).
Ватін

3

Це залежить від вашої заявки. Іноді можна використовувати часову позначку, подібну до описаної вами. Іноді, коли зіткнення імен викликає занепокоєння, ви можете використовувати генератор GUID .


2

Формат, який ви використовуєте, прекрасний, але якщо ви хочете унікальності, а час не має іншого значення, у вас можуть виникнути проблеми з одночасністю у вашій програмі, якщо програму використовують декілька користувачів одночасно, і всі вони спричиняють створення файлів у одному і тому ж папку. Якщо ви просто хочете унікальності, ви можете розглянути можливість створення GUID та видалення недійсних символів, таких як фігурні дужки та тире, і використовувати його як ім'я файлу.


2

Використання формату ISO 8601 також дозволяє сортувати файли за датою (припускаючи, що всі вони мають однаковий префікс).

http://www.iso.org/iso/support/faqs/faqs_widely_used_standards/widely_used_standards_other/date_and_time_format.htm
http://en.wikipedia.org/wiki/ISO_8601


5
Я думаю, що ви намагаєтесь сказати, що сортування лексично закінчується сортуванням за датою.
Майкл Коне

-3

У ФБР є "єдина" проблема користувачів - резервне копіювання відбитків 100 мільйонів злочинних арештів, які вони отримують від усієї поліції скрізь ...

... вони починаються з дати: yyyymmdd

Я не знаю, як вони тривають. Я продовжую hhmm і для мене це робить.

Використання GMT / Zulu звучить як відмінна ідея для глобального рішення. Особисто я використовую ET, а ФБР "особисто" також використовує ET, оскільки там знаходиться їх штаб-квартира.


3
Це не додає нічого до набагато більш загального обговорення в інших публікаціях, які насправді стосуються таких аспектів, як юридичні символи та сортування та унікальність.
Martijn Pieters
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.