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.");
}
}
}
這段代碼首先檢查文件是在同一年進行編輯。它檢查它的月份。然後它使用帶有當前日期時間信息的日曆類(其中包含以下內容:一週內有多少天,這是一週中的第一天等)。函數GetWeekOfYear返回星期數。這兩個整數進行比較,然後你走!
注:
您使用的LastAccessTime,但這也更新,當您在文件上做的小東西像雙擊它,在資源管理器(所以不是很有益的,如果你想知道,如果用戶真的開它)。改爲使用LastWriteTime(如果文件已更改,則更改)。
比較兩個DateTime對象... –
我可以通過獲取當前月份-1來獲取月份部分,並與我的日期進行比較,我在過去的一週中遇到了麻煩。 – confusedMind
關於'LastAccessTime',如果在Windows註冊表中有'NtfsDisableLastAccessUpdate = 1',那麼'LastAccessTime'不會被更新。 – linquize