在Java中向日历添加多天

菲尔

我正在编写一个需要处理日期的程序。我收到输入日期,它是一周的开始日期(星期一)。在这种情况下,时间为CET 2015年1月5日星期一。那么,我需要定义一周中其他日期的日期。

我试图这样做:

Calendar cStart = Calendar.getInstance();   

     Calendar cMon = Calendar.getInstance();
                Calendar cTue = Calendar.getInstance();
                Calendar cWed = Calendar.getInstance();
                Calendar cThu = Calendar.getInstance();
                Calendar cFri = Calendar.getInstance();
                Calendar cSat = Calendar.getInstance();
                Calendar cSun = Calendar.getInstance();

                cMon = cStart;
                cStart.add(Calendar.DAY_OF_MONTH, 1);
                cTue = cStart;
                cStart.add(Calendar.DAY_OF_MONTH, 1);
                cWed = cStart;
                cStart.add(Calendar.DAY_OF_MONTH, 1);
                cThu = cStart;
                cStart.add(Calendar.DAY_OF_MONTH, 1);
                cFri = cStart;
                cStart.add(Calendar.DAY_OF_MONTH, 1);
                cSat = cStart;
                cStart.add(Calendar.DAY_OF_MONTH, 1);
                cSun = cStart;

                System.out.println(cMon.getTime());
                System.out.println(cTue.getTime());
                System.out.println(cWed.getTime());
                System.out.println(cThu.getTime());
                System.out.println(cFri.getTime());
                System.out.println(cSat.getTime());
                System.out.println(cSun.getTime());

现在我的问题是,输出应如下所示:

Mon Jan 05 00:00:00 CET 2015
Tue Jan 06 00:00:00 CET 2015
Wed Jan 07 00:00:00 CET 2015
Thu Jan 08 00:00:00 CET 2015
Fri Jan 09 00:00:00 CET 2015
Sat Jan 10 00:00:00 CET 2015
Sun Jan 11 00:00:00 CET 2015

但实际上看起来像这样:

Sun Jan 11 00:00:00 CET 2015
Sun Jan 11 00:00:00 CET 2015
Sun Jan 11 00:00:00 CET 2015
Sun Jan 11 00:00:00 CET 2015
Sun Jan 11 00:00:00 CET 2015
Sun Jan 11 00:00:00 CET 2015
Sun Jan 11 00:00:00 CET 2015

我该怎么办才能收到我需要的输出?

kai

您正在分配cStart对每个变量的引用使用该clone()方法,每次都可以获取一个新对象。

Calendar cStart = Calendar.getInstance();

Calendar cMon = null;
Calendar cTue = null;
Calendar cWed = null;
Calendar cThu = null;
Calendar cFri = null;
Calendar cSat = null;
Calendar cSun = null;

cMon = (Calendar) cStart.clone();
cStart.add(Calendar.DAY_OF_MONTH, 1);
cTue = (Calendar) cStart.clone();
cStart.add(Calendar.DAY_OF_MONTH, 1);
cWed = (Calendar) cStart.clone();
cStart.add(Calendar.DAY_OF_MONTH, 1);
cThu = (Calendar) cStart.clone();
cStart.add(Calendar.DAY_OF_MONTH, 1);
cFri = (Calendar) cStart.clone();
cStart.add(Calendar.DAY_OF_MONTH, 1);
cSat = (Calendar) cStart.clone();
cStart.add(Calendar.DAY_OF_MONTH, 1);
cSun = (Calendar) cStart.clone();

System.out.println(cMon.getTime());
System.out.println(cTue.getTime());
System.out.println(cWed.getTime());
System.out.println(cThu.getTime());
System.out.println(cFri.getTime());
System.out.println(cSat.getTime());
System.out.println(cSun.getTime());

输出

Mon Feb 22 12:45:39 CET 2016
Tue Feb 23 12:45:39 CET 2016
Wed Feb 24 12:45:39 CET 2016
Thu Feb 25 12:45:39 CET 2016
Fri Feb 26 12:45:39 CET 2016
Sat Feb 27 12:45:39 CET 2016
Sun Feb 28 12:45:39 CET 2016

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章