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 を使用します (ファイルが変更された場合、これは変わります)。