Как мы все знаем, «unix» может иметь в файле что угодно, кроме «/» и «\ 0», однако системные администраторы, как правило, имеют гораздо меньшее предпочтение, в основном из-за того, что в качестве входных данных не используются пробелы ... и куча вещей, имеющих особое значение для «:» и «@» среди других.
Недавно я видел еще один случай, когда в имени файла использовалась временная метка, и после того, как я немного поиграл с разными форматами, чтобы сделать ее «лучше», я решил, что попытаюсь найти «лучшую практику», а не ту, которую я вычислил. Я бы просто спросил здесь и посмотреть, что думают люди.
Возможные «общие» решения (p = префикс и s = суффикс):
syslog / logrotate / DNS-подобный формат:
p-%Y%m%d-suffix = prefix-20110719-s p-%Y%m%d%H%M-suffix = prefix-201107191732-s p-%Y%m%d%H%M%S-suffix = prefix-20110719173216-s
плюсы:
- Это «обычный», так что «достаточно хороший» может быть лучше, чем «лучший».
- Никаких странных персонажей.
- Легко отличить «каплю даты / времени» от всего остального.
минусы:
- Версия только для даты не легка для чтения, и, учитывая время, мои глаза кровоточат, а секунды - это просто "смеется".
- Предполагает ТЗ.
ISO-8601- формат
p-%Y-%m-%d-s = p-2011-07-19-s p-%Y-%m-%dT%H:%M%z-s = p-2011-07-19T17:32-0400-s p-%Y-%m-%dT%H:%M:%S%z-s = p-2011-07-19T17:32:16-0400-s p-%Y-%m-%dT%H:%M:%S%z-s = p-2011-07-19T23:32:16+0200-s
плюсы:
- Пробелов нет
- Принимает во внимание ТЗ.
- «Неплохо» для чтения людьми (дата только v. Хорошо).
- Может быть сгенерировано $ (date --iso = {часы, минуты, секунды})
минусы:
- УПП / смола / и т.д.. не понравятся эти символы ':'.
- «Нормальным» людям нужно немного, чтобы увидеть WTF, для которого «Т», и что это за вещь в конце :).
- Много символов «-».
формат rfc-3339
p-%Y-%m-%d-s = p-2011-07-19-s p-%Y-%m-%d %H:%M%:z-s = p-2011-07-19 17:32-04:00-s p-%Y-%m-%d %H:%M:%S%:z-s = p-2011-07-19 17:32:16-04:00-s p-%Y-%m-%d %H:%M:%S%:z-s = p-2011-07-19 23:32:16+02:00-s
плюсы:
- Принимает во внимание ТЗ.
- Может быть легко прочитано «всеми людьми».
- Может отличить дату / время от префикса / суффикса.
- Некоторые из вышеперечисленных могут быть сгенерированы с помощью $ (date --iso = {hours, seconds})
минусы:
- Имеет пробелы во временных версиях (что означает, что весь код будет ненавидеть это).
- УПП / смола / и т.д.. не понравятся эти символы ':'.
Я люблю дефисы:
p-%Y-%m-%d-s = p-2011-07-19-s p-%Y-%m-%d-%H-%M-s = p-2011-07-19-17-32-s p-%Y-%m-%d-%H-%M-%S-s = p-2011-07-19-23-32-16-s
плюсы:
- в основном немного более приятный системный журнал / и т.д. вариант.
минусы:
- Много символов «-».
- Предполагает ТЗ.
Я люблю дефисы с расширениями:
p.%Y-%m-%d.s = p.2011-07-19.s p.%Y-%m-%d.%H-%M.s = p.2011-07-19.17-32.s p.%Y-%m-%d.%H-%M-%S.s = p.2011-07-19.23-32-16.s
плюсы:
- в основном немного более хороший вариант "я люблю дефисы".
- Никаких странных персонажей.
- Может отличить дату / время от префикса / суффикса.
минусы:
- С помощью '.' здесь несколько нетрадиционно.
- Предполагает ТЗ.
... так что любой хочет дать предпочтение и причину, или более чем одну (например, ТЗ не заботится о том, чтобы 95% оставалось локальным на машине, но очень важно, если это не так).
Или, очевидно, что-то не в списке выше.