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 (Это изменяется, если файл был изменен).
Сравните два объекта DateTime ... –
Я могу получить часть месяца, получив текущий месяц -1 и сравните с датой, которую у меня есть, у меня возникли проблемы с выполнением последней недели. – confusedMind
Что касается 'LastAccessTime', если в реестре Windows есть' NtfsDisableLastAccessUpdate = 1', то 'LastAccessTime' не будет обновляться. – linquize