2

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

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。我该怎么做,或者有更好的方法吗?

谢谢 :)

4

5 回答 5

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

希望能帮助到你。

于 2010-09-20T08:04:55.937 回答
5

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

于 2010-09-20T07:55:39.173 回答
2

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

于 2010-09-20T07:54:28.680 回答
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");
于 2010-09-20T07:56:31.187 回答
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);
于 2010-09-20T07:57:32.707 回答