Это несколько субъективный вопрос, и не очень важно в большой схеме вещей, но что-то, что меня раздражает регулярно. Кажется, нет никакого очевидного способа поставить метку времени в имени файла.
Задача состоит в том, что временные метки в именах файлов должны быть сортируемыми. Но .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", чтобы предотвратить догадки и ошибки.
Юлианские даты и другие stardates - это круто, потому что дата арифметика с gregorian calendar является braindead.