0

我使用以下代码从目录中获取最新修改的文​​件:

String tmpPath="C:\demotestDirectory";
FileInfo newestFile = GetNewestFile(new DirectoryInfo(tmpPath));
if (newestFile != null)
{
   DateTime lastmodifiedDate = newestFile.LastAccessTime;
   string currentMonth = DateTime.Now.Month.ToString();
}

我从目录中获得了最新的修改文件,现在我想知道该文件是否在过去一周以及过去一个月内被使用过。

任何帮助表示赞赏。

4

3 回答 3

0

使用它来查找 7 天前:

DateTime.Now.Subtract(new TimeSpan(7, 0, 0, 0));

请注意,您没有得到上次修改。您正在获得最后一次访问。最后修改时间使用:LastWriteTime

或者:根据您的评论,例如:

DateTime.Now.Subtract(new TimeSpan((int)DateTime.Now.DayOfWeek, 0, 0, 0));
于 2013-06-02T14:17:16.423 回答
0
FileInfo fi = new FileInfo(/*filename*/);
DateTime dateFile = fi.LastWriteTime;
DateTime now = DateTime.Now;

if (now.Year == dateFile.Year) { //same year?
   if (now.Month == dateFile.Month) { //same month?
       MessageBox.Show("File has been edited in this month.");
       DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
       Calendar c = dfi.Calendar;
       int fileWeek = c.GetWeekOfYear(dateFile, dfi.CalendarWeekRule, dfi.FirstDayOfWeek);
       int nowWeek = c.GetWeekOfYear(now, dfi.CalendarWeekRule, dfi.FirstDayOfWeek);
       if (fileWeek == nowWeek) { //same week?
           MessageBox.Show("File has been edited in this week.");
       }
   }

}

此代码首先检查文件是否在同一年被编辑。它检查它的月份。然后它使用具有当前 DateTimeInfo 的日历类(这包含诸如:一周中有多少天,这是一周的第一天等)。GetWeekOfYear 函数返回星期数。比较这两个整数,然后就可以了!

笔记:

您使用了 LastAccessTime,但是当您在文件上做一些小事情时,例如在资源管理器中单击它(如果您想知道用户是否真的打开它,这不是很有帮助)。改用 LastWriteTime(如果文件被更改,这会更改)。

于 2013-06-02T14:39:54.747 回答
0

你可以这样做 :

private void fileUsage()
 {
   String tmpPath = "C:\\demotestDirectory";
    FileInfo newestFile = GetNewestFile(new DirectoryInfo(tmpPath));
        if (newestFile != null)
        {
            DateTime currunt = DateTime.Now;
            DateTime old = newestFile.LastAccessTime;
            System.TimeSpan t = currunt.Subtract(old);
            double lastmodifiedDate = t.TotalMilliseconds;
            if (lastmodifiedDate <= 604800000)
            {
                Console.WriteLine("The File " + newestFile.Name + " has been used at " + newestFile.LastAccessTime.ToLocalTime());
            }
        }

 }
private FileInfo GetNewestFile(DirectoryInfo directoryInfo)
{
   var myFile = (from f in directoryInfo.GetFiles()
                          orderby f.LastWriteTime descending
                          select f).First();

   return new FileInfo(myFile.FullName);
}

由于该文件已在上周使用,这也意味着它已在上个月使用。

于 2013-06-02T14:50:31.973 回答