一个Demo中:
int today=d.get(Calendar.DAY_OF_MONTH);
int month=d.get(Calendar.MONTH);
上面的意思是得到现在的日和月;
d.set(Calendar.DAY_OF_MONTH,1);
int weekday=d.get(Calendar.DAY_OF_WEEK);
那么现在上面的语句又是设置这一天为第一天,这个我感觉有点迷糊,哪位可以解释一下啊?谢谢!!
int today=d.get(Calendar.DAY_OF_MONTH);
int month=d.get(Calendar.MONTH);
上面的意思是得到现在的日和月;
d.set(Calendar.DAY_OF_MONTH,1);
int weekday=d.get(Calendar.DAY_OF_WEEK);
那么现在上面的语句又是设置这一天为第一天,这个我感觉有点迷糊,哪位可以解释一下啊?谢谢!!
是获取由d确定的日期号;
d.set(Calendar.DAY_OF_MONTH,1);
则是将d对应的日期号设为1。
不觉得有什么不妥啊。
int value)将给定的日历字段设置为给定值。不管处于何种宽松性模式下,该值都不由此方法进行解释。 参数:
field - 给定的日历字段。
value - 给定日历字段所要设置的值。这里就是将Calendar.DAY_OF_MONTH设置为1,然后去取该月Calendar.DATE的是一个星期中的星期几。
import java.text.DateFormatSymbols;
import java.util.*;
public class Demo01 { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
GregorianCalendar d=new GregorianCalendar();
int today=d.get(Calendar.DAY_OF_MONTH);
int month=d.get(Calendar.MONTH);
d.set(Calendar.DAY_OF_MONTH,1);
int weekday=d.get(Calendar.DAY_OF_WEEK);
int firstDayOfWeek=d.getFirstDayOfWeek();
int indent=0;
while(weekday!=firstDayOfWeek){
indent++;
d.add(Calendar.DAY_OF_MONTH,-1);
weekday=d.get(Calendar.DAY_OF_WEEK);
}
String[] weekdayNames=new DateFormatSymbols().getShortWeekdays();
do{
System.out.printf("%4s",weekdayNames[weekday]);
d.add(Calendar.DAY_OF_MONTH, 1);
weekday=d.get(Calendar.DAY_OF_WEEK);
}
while(weekday!=firstDayOfWeek);
System.out.println();
for(int i=0;i<=indent;i++)
System.out.print(" ");
d.set(Calendar.DAY_OF_MONTH, 1);
do{
int day=d.get(Calendar.DAY_OF_MONTH);
System.out.printf("%3d", day);
if(day==today)System.out.print("*");
else System.out.print(" ");
d.add(Calendar.DAY_OF_MONTH, 1);
weekday=d.get(Calendar.DAY_OF_WEEK);
if(weekday==firstDayOfWeek)System.out.println();
}
while(d.get(Calendar.MONTH)==month);
if(weekday!=firstDayOfWeek)System.out.println();
}} 其中主要就以下代码,哪位大侠解释一下:
1,int firstDayOfWeek=d.getFirstDayOfWeek();
int indent=0;
while(weekday!=firstDayOfWeek){
indent++;
d.add(Calendar.DAY_OF_MONTH,-1);
weekday=d.get(Calendar.DAY_OF_WEEK);
}
就是不太明白d.add(Calendar.DAY_OF_MONTH,-1);具体什么意思,为什么-1呢? 2,String[] weekdayNames=new DateFormatSymbols().getShortWeekdays();
do{
System.out.printf("%4s",weekdayNames[weekday]);
d.add(Calendar.DAY_OF_MONTH, 1);
weekday=d.get(Calendar.DAY_OF_WEEK);
}
while(weekday!=firstDayOfWeek);
System.out.println();
其实还是add()方法问题,看了api后还是有点疑惑,到底是哪里增加或减少,减少的是什么呢?整个循环看到底都是问号,哪位大侠解释解释啊?