Java 我如何计算今年以来的周一数?
我正在尝试编写一个简单的过程,从年初开始,每隔一个星期一(每个发薪期日)就将其添加到列表中,发生的事情有点奇怪,但我以前从未使用过Calendar类,我想我可能使用了compareTo错误,但我阅读了javadoc,看起来还不错。 封装javasampleapps 导入java.util.ArrayList; 导入java.util.Calendar; 导入java.util.Date; 导入java.util.GregorianCalendar; 导入java.util.HashMap; 导入java.util.List; 导入java.util.MapJava 我如何计算今年以来的周一数?,java,date,calendar,compareto,Java,Date,Calendar,Compareto,我正在尝试编写一个简单的过程,从年初开始,每隔一个星期一(每个发薪期日)就将其添加到列表中,发生的事情有点奇怪,但我以前从未使用过Calendar类,我想我可能使用了compareTo错误,但我阅读了javadoc,看起来还不错。 封装javasampleapps 导入java.util.ArrayList; 导入java.util.Calendar; 导入java.util.Date; 导入java.util.GregorianCalendar; 导入java.util.HashMap; 导入
/**
*
* @author DavidH
*/
public class AddingDaysToCalendar {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Calendar cal = new GregorianCalendar();
System.out.println(cal.get(Calendar.WEEK_OF_YEAR));
cal.add(Calendar.WEEK_OF_YEAR, 1);
System.out.println(cal.get(Calendar.WEEK_OF_YEAR));
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
cal.set(Calendar.WEEK_OF_YEAR, 1 + 1);
Calendar currentDate = new GregorianCalendar();
currentDate.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
int counter = 2;
List<Date> dates = new ArrayList<Date>();
while ((cal.getTime().compareTo((currentDate.getTime())) < 0)) {
cal.set(Calendar.WEEK_OF_YEAR, counter);
dates.add(cal.getTime());
counter += 2;
}
System.out.println("Listing Dates:");
for (Date d : dates) {
System.out.println(d);
}
}
}
为什么要加上最后的日期?9月26日甚至还没有发生
为什么要加上最后的日期?9月26日甚至还没有发生
因为在检查日期与当前时间的关系之后,在将其添加到列表之前,您提前了日期:
while ((cal.getTime().compareTo((currentDate.getTime())) < 0)) {
cal.set(Calendar.WEEK_OF_YEAR, counter);
dates.add(cal.getTime());
counter += 2;
}
while((cal.getTime().compareTo((currentDate.getTime())<0)){
校准设置(日历周/年/计数器);
dates.add(cal.getTime());
计数器+=2;
}
这将解决该问题(但可能会引入其他问题):
while((cal.getTime().compareTo((currentDate.getTime())<0)){
dates.add(cal.getTime());
计数器+=2;
校准设置(日历周/年/计数器);
}
为什么要加上最后的日期?9月26日甚至还没有发生
因为在检查日期与当前时间的关系之后,在将其添加到列表之前,您提前了日期:
while ((cal.getTime().compareTo((currentDate.getTime())) < 0)) {
cal.set(Calendar.WEEK_OF_YEAR, counter);
dates.add(cal.getTime());
counter += 2;
}
while((cal.getTime().compareTo((currentDate.getTime())<0)){
校准设置(日历周/年/计数器);
dates.add(cal.getTime());
计数器+=2;
}
这将解决该问题(但可能会引入其他问题):
while((cal.getTime().compareTo((currentDate.getTime())<0)){
dates.add(cal.getTime());
计数器+=2;
校准设置(日历周/年/计数器);
}
伙计,我真是个笨蛋。这就好比,编程101。这是一个例子,其中<代码>()循环可能比<<代码>()<代码>循环更容易管理。好的调用,我以后会考虑这个。因为比较,我只使用了一个while循环。伙计,我这方面真是个笨蛋。这就好比,编程101。这是一个例子,其中<代码>()循环可能比<<代码>()<代码>循环更容易管理。好的调用,我以后会考虑这个。由于比较,我只使用了while循环。
while ((cal.getTime().compareTo((currentDate.getTime())) < 0)) {
dates.add(cal.getTime());
counter += 2;
cal.set(Calendar.WEEK_OF_YEAR, counter);
}