有没有办法尝试从文件名中猜测日期,如果不能,可以优雅地失败?

时间:2012-06-04 21:17:16

标签: c# winforms datetime datepicker

我想尝试(以编程方式)猜测文件的创建日期。它被命名为 BlaBla.2012-06-04.xlw ,我猜它是在2012年6月4日创建的。

但是,如果该文件被命名为其他内容,例如 SitOnA.PotatoPanOtis.pal ,我希望能够简单地放弃(没有尝试转换为导致异常的DateTime)并呈现具有DateTimePicker的用户。

可行?

我有这段代码:

String substr = SelectedFileName.Substring(DATE_BEGIN_POS, DATE_LENGTH);
return DateTime.Parse(substr);

我认为这样的事情会有意义:

try 
{
    String substr = SelectedFileName.Substring(DATE_BEGIN_POS, DATE_LENGTH);
    return DateTime.Parse(substr);
}
catch (ConversionException ce) 
{
    //Show form with DateTimePicker
}

更新

似乎这样的事情应该有效:

DateTime dt;
if (!(DateTime.TryParse(substr, out dt))) {
   . . .

3 个答案:

答案 0 :(得分:4)

不要猜测。得到它!

var creationTime = File.GetCreationTime(@"c:\myfile.txt");

答案 1 :(得分:1)

您可以使用File.GetCreationTime直接询问创建时间,或者如果您尝试通过文件名猜测,那么您可以使用TryParse作为日期,如果不起作用(方法)返回false)然后显示对话框。

答案 2 :(得分:1)

使用RegEx匹配文件名。

Regex r = new Regex("\d{4}-\d{2}-\d{2}");
if (r.Match(fileName).Success) {
    //GUESS!
}