日期:2014-05-20  浏览次数:20691 次

从2007年5月31日开始 循环显示每个月的31日,循环10次,高手们有没有好办法
从2007年5月31日开始   循环显示每个月的31日,循环10次,高手们有没有好办法

这里有两个问题,一是     跨年     二是     每月的天数不同,还有润月

------解决方案--------------------
循环显示每个月的31日?????
------解决方案--------------------
太阳历的闰月不是多出来1个月,而是2月多出来1天
每年只有1、3、5、7、8、10、12月是31天
------解决方案--------------------
你的意思是不是说从2007年5月31日开始,只显示那些天数为31天的月份?
天数为31天的只有 1 3 5 7 8 10 12 ,仿佛不用考虑那么多就可以搞定的阿
------解决方案--------------------
不大明白你的意思
如果只是列出有31天的月数,按
CrazyGou(阿狗)(...) ( )
就差不多了
------解决方案--------------------
每月最后1天

java好像有现成的

sql也可以写出来

select last_day(add_months(to_date( '2007/02/02 ', 'yyyy/mm/dd '),i)) from dual
//2007/02/02后的第i个月的最后1天

你再传值i进去,循环就可以了
------解决方案--------------------

import java.text.SimpleDateFormat;
import java.util.Date;

/*
* Created on 2007-5-12
*/

/**
* @author luohan
* 从今天开始 循环显示每个月的31日,循环10次
*/
public class Theday31 {

public static void main(String[] args) {
String[] theday = new String[10];
SimpleDateFormat sdf = new SimpleDateFormat( "dd ");
SimpleDateFormat sdf1 = new SimpleDateFormat( "yyyy-MM-dd ");
int num = 0;
Date date = new Date();
long lon = (date.getTime() / 1000);

for (;;) {
lon = (date.getTime() / 1000) + 60 * 60 * 24;
date.setTime(lon * 1000);
String day = sdf.format(date);
if (Integer.parseInt(day) == 31) {
System.out.println(sdf1.format(date) + " ");
num += 1;
if (num == 10) {
break;
}
}
}

}
}
------解决方案--------------------
Calendar c = Calendar.getInstance();
c.clear();
c.setTime(new SimpleDateFormat( "yyyy年MM月dd日 ").parse( "2006年5月31日 "));
int year = 0;
int month = 0;
int day = 0;
for(int i = 0; i < 10; i++){
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH) + 1;
day = c.getActualMaximum(Calendar.DATE);
System.out.println(year + "年 " + month + "月 " + day + "日 ");
c.add(Calendar.MONTH, 1);
}