0

以下のコードを使用して、ディレクトリから最新の変更されたファイルを取得します。

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

そして、ディレクトリから最新の変更されたファイルを取得します。そのファイルが過去 1 週間、および過去 1 か月に使用されたかどうかを確認したいと思います。

どんな助けでも感謝します。

4

3 に答える 3

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 を含むカレンダー クラスを使用します (これには、1 週間に何日あるのか、週の最初の曜日などがあります)。関数 GetWeekOfYear は、週の番号を返します。2 つの整数が比較されます。

ノート:

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 に答える
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 に答える