我使用以下代码从目录中获取最新的修改文件:
String tmpPath="C:\demotestDirectory";
FileInfo newestFile = GetNewestFile(new DirectoryInfo(tmpPath));
if (newestFile != null)
{
DateTime lastmodifiedDate = newestFile.LastAccessTime;
string currentMonth = DateTime.Now.Month.ToString();
}
我从目录中获得了最新的修改过的文件,现在我想知道该文件是否在过去一周以及过去一个月内被使用过。
任何帮助表示感谢。
答案 0 :(得分:0)
使用此功能查找7天前:
DateTime.Now.Subtract(new TimeSpan(7, 0, 0, 0));
请注意,您不上次修改。你最后一次访问。对于上次修改时间,请使用:LastWriteTime。
或者:根据您的意见,例如:
DateTime.Now.Subtract(new TimeSpan((int)DateTime.Now.DayOfWeek, 0, 0, 0));
答案 1 :(得分: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(如果文件已更改,则会更改)。
答案 2 :(得分: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);
}
由于该文件已在上周使用,因此也意味着它已在上个月使用过。