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