使用datetime作为文件名并在之后解析文件名?

时间:2010-09-20 07:50:22

标签: c# datetime file-io datetime-format

我正在将文件写入我的硬盘,文件名是这样构建的:

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

因此文件名为“2010-09-20_09-47-04.txt”。现在我想在下拉列表中显示这些文件名,但是使用其他格式。格式应为dd.MM.yyyy HH:mm:ss。我怎么能这样做,还是有更好的方法?

谢谢:)

5 个答案:

答案 0 :(得分:6)

我在控制台上尝试了这个,它完成了这项工作。

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

希望它有所帮助。

答案 1 :(得分:5)

您可以使用DateTime.ParseExact使用与构建名称相同的格式将文件名解析为DateTime对象,然后使用ToString将其转换为所需的格式

答案 2 :(得分:2)

您可以将其解析回DateTime,然后将其格式化为您的显示格式。

答案 3 :(得分:1)

string FileName = "2010-09-20_09-47-04";
DateTime dt = new DateTime();
dt = DateTime.Parse(FileName.Substring(0, 10));
dt.ToString("dd.MM.yyyy");

答案 4 :(得分:0)

您可以使用正则表达式解析文件名:

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);