Це дещо суб’єктивне питання, і не дуже важливе у великій схемі речей, але те, що все ж мене регулярно дратує. Здається, немає зрозумілого способу поставити позначку часу в назві файлу .
Об’єктивна проблема полягає в тому, що мітки часу в іменах файлів повинні сортуватися . Але сортувальні формати дат .NET, такі як "s" ( "yyyy-MM-ddTHH:mm:ss"
) та "u" ( "yyyy-MM-dd HH:mm:ssZ"
), не є дійсними в іменах файлів через символи ':'.
Інша справа, що ви повинні легко побачити, чи використовується універсальний чи місцевий час . Практично, схоже, користувачі віддають перевагу місцевому часу загальному.
Я в основному використовував ISO 8601 з основним форматом часу:
- Рядок формату місцевого часу
"yyyy-MM-ddTHHmmsszz"
- Рядок формату UTC
"yyyy-MM-ddTHHmmssZ"
У цих форматах моїм поточним місцевим часом буде "2009-08-08T151800+03"
UTC"2009-08-08T121800Z"
Ви також можете автоматично визначити DateTime.Kind за допомогою "K" і використовувати "yyyy-MM-ddTHHmmssK"
, але тоді вам доведеться замінити символи ':'.
Будь-які інші пропозиції?
Змінити: Поки що кілька приміток:
Формат місцевого часу + часовий пояс "yyyy-MM-ddTHHmmsszz"
більше не можна сортувати, якщо задіяно кілька часових поясів. У більшості випадків має сенс упустити інформацію про часовий пояс, якщо вона зайва, а в іншому випадку використовувати UTC.
Інша справа, що UTC завжди повинен бути позначений „Z”, „GMT” або „UTC”, щоб запобігти здогадкам та помилкам.
Джуліанські дати та інші зоряні дати - це круто, тому що арифметика дат за григоріанським календарем є розумовою.