Suaidh Ответов: 2

как создать папку на основе даты и времени в C#


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


Образец на Солнце 01.12.2014 в 09.13 часов

Итак,я думаю, что код можно свести к трем основным частям:

1 - имя (образец) должно быть взято из текстового поля
2 - часть "на солнце" и 01.12.2014 должна быть в другой строке, я полагаю?
3 - часть "в 09.13 утра" - это тоже другая часть, я думаю.



я исследовал код в пакетном режиме в течение некоторого времени, и это выглядит примерно так:
штрих-код для этой операции :
[

Эхо выключено
режим con cols=50 линий=25
название создать папку для резервного копирования
ЦБС
set /p userinp= ^> введите имя папки для резервного копирования:
к /ф "маркеры=1-3 delims=:/" %%I в ("%дата%") сделать установить метка=%%я.%%Дж.%%к
к /ф "маркеры=1-4 delims=:/" %%I в ('время /Т') сделать набор типа timestamp=%%я.%%Дж.%%к

md "%userinp% on %DATESTAMP% At %TIMESTAMP%"
echo %userinp% on %DATESTAMP% At %TIMESTAMP%
ЦБС
ВЫХОД

]
я новичок в этой области кодирования, поэтому, пожалуйста, помогите мне.
Заранее спасибо!

Karthik_Mahalingam

в чем ваша проблема ??

Suaidh

я хочу код, который может быть использован на событии нажатия кнопки ..это должно в основном принимать текущую дату и время вместе с содержимым конкретного текстового поля и создавать каталог в определенной папке!

Karthik_Mahalingam

проверьте мое решение

BillWoodruff

Просто любопытно: требуется ли, чтобы имена папок были такими же "читабельными", как и ваш "образец" ?

2 Ответов

Рейтинг:
11

Karthik_Mahalingam

Попробуйте этот код..


private void button1_Click(object sender, EventArgs e)
       {
           //Sample on Sun 01.12.2014 At 09.13 AM
           string locationToCreateFolder = "D://";
           string folderName = "";
           string date = DateTime.Now.ToString("ddd MM.dd.yyyy");
           string time = DateTime.Now.ToString("HH.mm tt");
           string format = "{0} on {1} At {2}";
           folderName = string.Format(format, textBox1.Text, date, time);
           Directory.CreateDirectory(locationToCreateFolder + folderName);
           MessageBox.Show("done");
       }


Suaidh

Ты самый лучший, спасибо тебе огромное...ты спас меня от интернета на несколько лет вперед...

Karthik_Mahalingam

добро пожаловать чувак :)

Рейтинг:
0

Ron Beyer

Вам нужна пара разных кусочков:

Каталог.CreateDirectory[^] для создания каталога.

значение datetime.ToString(строка)[^] чтобы создать строку для этого времени.

И

Строки Пользовательского Формата DateTime[^] для создания пользовательского формата.

Таким образом, ваш код будет выглядеть примерно так:

public void CreateDirectory(string prefix)
{
    string dirName = prefix + " on " + DateTime.Now.ToString("ddd MM.dd.yyyy 'At' HH:mm tt");

    //Improved version of the above:
    string dirName = string.Format("{0} on {1:ddd MM.dd.yyy 'At' HH:mm tt}", prefix, DateTime.Now);

    Directory.CreateDirectory(dirName);
}


[Редактировать записи] Вторая версия предпочтительнее (удалите первую строку), все, что вы можете сделать, чтобы избежать конкатенации строк, лучше, хотя снижение производительности в этом случае незначительно. [/Редактировать]

Который вы бы назвали своим префиксом текстового поля.

Примечание: Я не проверял, зарезервированы ли какие-либо символы, если они есть, вы получите исключение при попытке создать каталог, говоря, что в нем есть недопустимые символы.


Suaidh

так как же мне имплантировать его в событие кнопки ...? а также исключение выбрасывается каждый раз, когда оно выполняется.Кстати, работает ли это :"CreateDirectory();" в событии нажатия кнопки?
и как мне настроить его на создание папки в текущем каталоге приложения?

Ron Beyer

Вы можете использовать содержимое функции, которую я разместил в вашей кнопке, просто замените префикс на textbox1.Text (или как там называется ваше текстовое поле). Чтобы установить текущий каталог, вам нужно добавить каталог приложения на передний план, например:

каталог строка = строка.Формат("{0}\\{1} на {2:ДДД ММ. ДД.ууу 'в' ЧЧ:мм ТТ}", окружающей среды.Текущей каталог, префикс, дата и время.Сейчас);