如果我有一个包含许多未排序文件的 vector ,我如何按上次修改日期对它们进行分类?
我需要做的是将文件放入另外 3 个 vector 中,最后修改日期为“今天”、“昨天”和“本周”。
Vector<File> files; //This vector contains all the files that need to be categorized
Vector<File> todayFiles; //Empty
Vector<File> yesterdayFiles; //Empty
Vector<File> weekFiles; //Empty
我知道我可以使用 file.lastModified() 来获取日期,但它返回格式为 long int 的以毫秒为单位的日期,因此我不确定是否有更简单的方法来比较和分组日期,而无需执行一些复杂的算术工作。
我是 Java 新手,所以我不知道如何解决这个问题,任何帮助将不胜感激。
更新
我能够以某种方式让代码工作,但它仍然无法正常工作。这就是我所拥有的:
private Calendar cal;
private long todayTime;
this.cal = Calendar.getInstance();
this.cal.set(Calendar.HOUR_OF_DAY, 0);
this.cal.set(Calendar.HOUR, 0);
this.cal.set(Calendar.MINUTE, 0);
this.cal.set(Calendar.SECOND, 0);
this.cal.set(Calendar.MILLISECOND, 0);
this.todayTime = cal.getTimeInMillis();
现在,当我尝试将它们添加到我创建的 vector 中时,它只会抓取在今天下午修改过的文件:
for(int i = 0; i < this.files.size(); i++) {
if(this.files.get(i).lastModified() >= this.todayTime) {
this.today.add(this.files.get(i));
}
}
我是不是做错了什么?顺便感谢您的所有精彩回复!
最佳答案
您可以使用Calendar
类来获取所需日期(例如今天和昨天)的时间戳。例如,要获取今天(午夜)的时间戳:
Calendar cal = Calendar.getInstance();
// cal initially contains current time
cal.set(Calendar.HOUR, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
long todayTimestamp = cal.getTimeInMillis();
然后你可以将这个时间戳与file.lastModified()
进行比较,并将文件放入相应的 vector 中。
关于java - 在Java中,如何根据文件的最后修改日期将 vector 中的文件排序为3个不同的 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9355996/