2011-10-11 49 views
1

我有一个备份文件存放在文件夹路径是这样的C:\文件夹如何日期时间选择器值与一些文件夹名称比较

文件都是这样在下面的图片enter image description here

文件名状这... 20111011意味着今天日期 095523意味着时间

和我有一个日期时间选择器,我有按钮,当用户选择日期时间选择器的值,然后选择按钮,

我需要ŧ o将日期时间选择器值与存储在该文件夹中的文件名进行比较,然后如果日期时间选择器值与文件夹名称的部分相匹配(backup-{this is part})我想将zip文件提取到给定文件夹中....

我可以得到比较日期时间选择器值与文件夹名称并将文件提取到给定的路径....

+2

你有没有尝试过任何东西,你有任何现有的代码? –

回答

2

In .net Directory.GetFiles用于从特定路径获取文件的方法。

下面的链接中提到的代码可以根据需要在foreach循环中进行更改。这个循环给你的文件名,你可以比较它。

public static void ProcessDirectory(string targetDirectory) 
{ 
    // Process the list of files found in the directory. 
    string [] fileEntries = Directory.GetFiles(targetDirectory); 
    foreach(string fileName in fileEntries) 
     Do work here which you need. 
} 

检查此链接为datetimepicker value

+0

我知道一个,但如何比较文件名与datetiempicker –

+0

在datetimepicker中有属性命名值使用该属性并进行比较。 –

+0

检查此代码以仅从datetimepicker获取日期字符串theDate = dateTimePicker1.Value.ToShortDateString();或者你想获得整个值使用字符串theDate = dateTimePicker1.Value.tostring(); –

1

首先,您将不得不正确设置DateTimePicker date-time format以选择日期和时间。

dateTimePicker1.Format = DateTimePickerFormat.Custom; 
dateTimePicker1.CustomFormat = "MM dd yyyy hh mm ss"; 

接下来我想你必须通过使用DateTimePicker.Value构造文件名。看看here,你可以将DateTime转换为你需要的格式。

例如...

DateTime dt = dateTimePicker1.Value; 
string fileName = string.Format("backup-{0}",dt.ToString(yyyyMMddHHmmss)); 

不知道你的时间格式。如果是12小时使用“H”并且使用“HH”24小时。有关更多示例,请参阅here。其余部分将不会很困难...

0

可以使用System.IO.File

读取文件名时,您已经阅读它们,你可以使用DateTime.ParseExact解析文件的日期和时间提取的日期。

然后你只需要比较文件日期和时间与你的日期选择器的值。

0

你可以尝试这样的:

DateTime dateSelected = <date coming from the picker>; 
string fileRequested = string.Format("backup-{0}{1}{2}{3}{4}{5}",dateSelected.Year,dateSelected.Month,dateSelected.Day,dateSelected.Hour,dateSelected.Minute,dateSelected.Second; 

然后你可以使用从Emaad答案与文件,以获得工作。

0

只是它“哈克” - 但它的作品。

 var dateToParse = "20111011095323"; 
     var date = new DateTime(int.Parse(dateToParse.Substring(0, 4)), 
           int.Parse(dateToParse.Substring(4, 2)), 
           int.Parse(dateToParse.Substring(6, 2)), 
           int.Parse(dateToParse.Substring(8, 2)), 
           int.Parse(dateToParse.Substring(10, 2)), 
           int.Parse(dateToParse.Substring(12, 2))); 
+0

为什么不是DateTime.ParseExact(dateToParse,“yyyyMMddHHmmss”,CultureInfo.InvariantCulture)? – PVitt

+0

你是对的!有时候有人在错误的轨道上...... ;-) – Fischermaen