Используя дату и время в качестве имени файла и потом анализировать имя файла? - PullRequest
2 голосов
/ 20 сентября 2010

Я записываю файлы на жесткий диск, имя файла выглядит так:

String.Format("{0:yyyy-MM-dd_hh-mm-ss}.txt", DateTime.Now)

Так, например, имя файла «2010-09-20_09-47-04.txt». Теперь я хочу показать эти имена в выпадающем списке, но в другом формате. Формат должен быть дд.мм.гггг ЧЧ: мм: сс. Как я могу это сделать, или есть лучший подход?

Спасибо:)

Ответы [ 5 ]

6 голосов
/ 20 сентября 2010

Я попробовал это на консоли, и он сделал свою работу.

Imports System.Globalization
Module Module1

Sub Main()
    Dim enUS As New CultureInfo("en-US")
    Dim d As String = Format(DateTime.Now, "yyyy-MM-dd_hh-mm-ss")
    Dim da As Date = DateTime.ParseExact(d, "yyyy-MM-dd_hh-mm-ss", enUS)
    Console.WriteLine("Date from filename: {0}", d)
    Console.WriteLine("Date formated as date: {0}", Format(da, "dd.MM.yyyy HH:mm:ss"))

End Sub
End Module

Надеюсь, это поможет.

5 голосов
/ 20 сентября 2010

Вы можете использовать DateTime.ParseExact с тем же форматом, который вы используете для построения имени, чтобы проанализировать имя файла в объект DateTime и затем преобразовать его в желаемый формат с помощью ToString

2 голосов
/ 20 сентября 2010

Вы можете разобрать его обратно в DateTime, а затем отформатировать в соответствии с форматом отображения.

1 голос
/ 20 сентября 2010
string FileName = "2010-09-20_09-47-04";
DateTime dt = new DateTime();
dt = DateTime.Parse(FileName.Substring(0, 10));
dt.ToString("dd.MM.yyyy");
0 голосов
/ 20 сентября 2010

вы можете разобрать ваше имя файла с помощью регулярного выражения:

Regex r = new Regex("(\d{4})-(\d{2})-(\d{2})-(\d{2})_(\d{2})-(\d{2})-(\d{2}).txt");
Match m = r.Match(fileName);

Обновление: Подход DateTime.Parse, предложенный другими, гораздо более уместен.вы работаете с датами, возможно, вы захотите использовать вместо этого дату создания или изменения файла?

FileInfo f = new FileInfo(fileName);
string title = String.Format("{0:dd.MM.yyyy}", f.CreationTime);
...