Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我如何计算今年以来的周一数?_Java_Date_Calendar_Compareto - Fatal编程技术网

Java 我如何计算今年以来的周一数?

Java 我如何计算今年以来的周一数?,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; 导入

我正在尝试编写一个简单的过程,从年初开始,每隔一个星期一(每个发薪期日)就将其添加到列表中,发生的事情有点奇怪,但我以前从未使用过Calendar类,我想我可能使用了compareTo错误,但我阅读了javadoc,看起来还不错。 封装javasampleapps

导入java.util.ArrayList; 导入java.util.Calendar; 导入java.util.Date; 导入java.util.GregorianCalendar; 导入java.util.HashMap; 导入java.util.List; 导入java.util.Map

/**
 *
 * @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);
 }