用Calendar 没想到合适的方法啊
各位帮帮忙 Calendar 有没有方法实现?
一会试一下
刚才用了一种很笨的方法
package test;
import java.util.Calendar;
public class test_b {
public test_b() {
}
public static void main(String args[]){
int[] month={31,28,31,30,31,30,31,31,30,31,30,31};
int i,tmp,temp;
int begin=1; //这一年的第一天是星期几
int key=3; //要输出星期几的日期
for(i=0;i<month.length;i++){
temp=month[i];
if(begin<=key){
tmp=key-begin+1;
}else{
tmp=7-key+4;
}
System.out.println(i+1+"月"+tmp+"日");
tmp=tmp+7;
while(tmp<=month[i]){
System.out.println(i+1+"月"+tmp+"日");
tmp=tmp+7;
}
key=tmp-month[i]; // 设置下个月的第一天是星期几?
}
}
}
[此贴子已经被作者于2007-10-10 23:57:29编辑过]
一会试一下
刚才用了一种很笨的方法
package test;
import java.util.Calendar;
public class test_b {
public test_b() {
}
public static void main(String args[]){
int[] month={31,28,31,30,31,30,31,31,30,31,30,31};
int i,tmp,temp;
int begin=1; //这一年的第一天是星期几
int key=3; //要输出星期几的日期
for(i=0;i<month.length;i++){
temp=month[i];
if(begin<=key){
tmp=key-begin+1;
}else{
tmp=7-key+4;
}
System.out.println(i+1+"月"+tmp+"日");
tmp=tmp+7;
while(tmp<=month[i]){
System.out.println(i+1+"月"+tmp+"日");
tmp=tmp+7;
}
key=tmp-month[i]; // 设置下个月的第一天是星期几?
}
}
}
即红色部分去掉
package test;
import java.util.Calendar;
public class test_b {
public test_b() {
}
public static void main(String args[]){
int[] month={31,28,31,30,31,30,31,31,30,31,30,31};
int i,tmp,temp;
int begin=1; //这一年的第一天是星期几
int key=3; //要输出星期几的日期
for(i=0;i<month.length;i++){
temp=month[i];
if(begin<=key){
tmp=key-begin+1;
}else{
tmp=7-key+4;
}
System.out.println(i+1+"月"+tmp+"日");
tmp=tmp+7;
while(tmp<=month[i]){
System.out.println(i+1+"月"+tmp+"日");
tmp=tmp+7;
}
key=tmp-month[i]; // 设置下个月的第一天是星期几?
}
}
}
public class Days {
/**
* 根据输入的年份(year)和星期几(targetDate),返回该年份中所有为星期几的日期
* @param year
* @param targetDate
* @return 所有为星期几的日期的集合
*/
public static ArrayList<String> getDays(int year, int targetDate) {
ArrayList<String> days = new ArrayList<String>();
Calendar calendar = Calendar.getInstance();
// 第一天是星期天,因此星期三实际上是一个星期中的第四天
int target_date = targetDate + 1;
// 这一年有多少天
calendar.set(year, 11, 31);
int days_of_year = calendar.get(Calendar.DAY_OF_YEAR);
// 这一年中的第一天是星期几
calendar.set(year, 0, 1);
int first_date_of_the_year = calendar.get(Calendar.DAY_OF_WEEK);
// 第一个星期几是这一年中的第几天
int first_day_of_the_target;
if (first_date_of_the_year < target_date) {
first_day_of_the_target = target_date - first_date_of_the_year + 1;
} else if (first_date_of_the_year == target_date) {
first_day_of_the_target = 1;
} else {
first_day_of_the_target =
7 - first_date_of_the_year + target_date + 1;
}
// 把日期格式化存放在数组中,可以自定义格式
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
for (int i = first_day_of_the_target; i < days_of_year; i += 7) {
calendar.set(year, 0, i);
days.add(df.format(calendar.getTime()));
}
return days;
}
public static void main(String[] args) {
// 找出2007年所有为星期三的日期
System.out.println(getDays(2007, 3));
// 找出2008年所有为星期二的日期
System.out.println(getDays(2008, 2));
}
}