Я работаю над обновлением проекта, в котором для размещения файла в папке на основе даты используется следующий код:
int month = DateTime.Now.Month;
string zero = (month < 10) ? "-0" : "-";
string folder = "Folder" + DateTime.Now.Year.ToString() + zero + month.ToString() + "\\";
if (!Directory.Exists(folder))
{
Directory.CreateDirectory(folder);
}
ArchiveFolder = folder;
//...
DateTime now = DateTime.Now;
int date = now.Day;
string zero = (date < 10) ? "0" : "";
string saveaspath = zero + date.ToString() + "_" + now.ToLongTimeString() + "_" + name;
#if DOTNET20
foreach (char c in Path.GetInvalidFileNameChars())
#else
foreach (char c in Path.InvalidPathChars)
#endif
saveaspath = saveaspath.Replace(c, '-'); // substitute - for bad chars
saveaspath = saveaspath.Replace(':', '-');
string originalname = saveaspath;
string ext = ".ext";
saveaspath = Path.Combine(ArchiveFolder, saveaspath + ext);
int count = 1;
while (File.Exists(saveaspath)) // make unique
{
string num = " (" + count++.ToString() + ")";
saveaspath = Path.Combine(ArchiveFolder, originalname + num + ext);
}
Пример сгенерированного файла: Folder/2010-06/18_2-42-09 PM_name.ext
Это выполняется для каждого создаваемого файла, обычно много файлов за раз из-за характера программы.
Я думал об обновлении объединенных строк DateTimes со строками формата DateTime--Я подумал, что это может быть более эффективным, чем все эти различные вызовы ToString () и т. Д .;однако я нервничаю, что может облажаться, когда у пользователя другие настройки культуры.Опять же, этот текущий код может сделать что-то необычное - я не знаю.
Итак: Должен ли я переделывать код, используя строки форматирования?Или оставить все как есть?Это пойдет на пользу производительности?Будет ли это зависеть от культуры?
(Чтобы уточнить: мой вопрос не в том, КАК переписать его, используя строку формата; скорее, я обеспокоен последствиями этого.)