Как мне создать файл на основе даты? - PullRequest
1 голос
/ 19 февраля 2011
    string filename = DateTime.Today.ToString() + ".csv";
    if(!File.Exists(filename))
        File.Create(filename);

Я думал, что это сработает, но выдает ошибку «формат не поддерживается».Я просто хочу, чтобы csv был создан в каталоге вместе с моим .exe

Ответы [ 5 ]

5 голосов
/ 19 февраля 2011

Думаю, проблема в том, что преобразование DateTime в строку приведет к созданию строки с недопустимыми символами имени файла, например двоеточия (:), и это приведет к сбою создания.

Вы можете использовать строку формата для управления сгенерированным именем файла. например,

string filename = DateTime.Today.ToString("yyyy-MM-dd") + ".csv";
3 голосов
/ 19 февраля 2011

Это потому, что DateTime.Today.ToString() содержит косые черты, которые недопустимы как часть имени файла Windows.

Однако вы можете сделать это: DateTime.Now.ToString("yyyyMMdd")

1 голос
/ 19 февраля 2011

Как все уже отметили, форматирование DateTime.ToString () по умолчанию содержит недопустимые символы (практически для любых настроек региона), так что

string filename = DateTime.Now.ToString() + ".csv";

генерирует «имя файла» наподобие 2/18/2011 4:26:48 PM.csv - что неверно

если вы хотите имя на основе даты и времени, попробуйте

string filename = DateTime.Now.ToString("yyyyMMddhhmmss") + ".csv";

чтобы получить что-то вроде 2011021804254.csv

Вы можете добавить больше форматирования, если оно не содержит ничего из следующего: \ / : * ? " < > |

1 голос
/ 19 февраля 2011

Полагаю, в вашей локали есть / / : (или похожие сбивающие с толку символы) в формате даты. Вы должны указать явный формат - "yyyy MM dd", например:

string filename = DateTime.Today.ToString("yyyy MM dd",
            CultureInfo.InvariantCulture) + ".csv";
0 голосов
/ 19 февраля 2011

Ваша дата имеет косую черту, попробуйте вместо этого

string filename = Datetime.Now.Ticks.ToString() + ".csv";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...