一年有365天或366天
给你从1-366个数字中的一个
然后再给你一个年份如2012,2011
然后你得出是这个年份的几月几日
例子
天数是:32
年数是2012
结果是2012年2月1日
天数是:61
年数是2012
结果是2012年3月1日
[code="java"]public class YearTest {
//定义每月的天数
public static int month[]={31,28,31,30,31,30,31,31,30,31,30,31};
//判断是否是闰年
public static boolean isLeapYear(int year){
boolean flag=false;
if(year%400==0||(year%4==0 && year%100!=0)){
flag=true;
}
return flag;
}
//判断某天是一年当中某月的第几天
public static int getDay(int m,int day){
int sum=0;
for(int i=0;i<m;i++){
sum+=month[i];
}
return day-sum;
}
public static String getDetail(int year,int day){
int sum=0;
int m=0;
int d=0;
if(isLeapYear(year)){
month[1]=29;
}
for(int i=0;i<month.length;i++){
sum=sum+month[i];
if(sum>=day){
m=i;
break;
}
}
d=getDay(m,day);
String result="哈哈,这是"+year+"年"+(m+1)+"月"+d+"日";
return result;
}
/**
* @param args
*/
public static void main(String[] args) {
String result=YearTest.getDetail(2012,61);
System.out.println(result);
}
}
[/code]
首先,根据年份能知道这一年是365还是366天
然后看这个数字落在哪个区间就知道是哪个月了,再取余就知道是几号了.
以365天的为例
1月结束 31天
2月结束 59天
3月结束 90天
4月结束 120天
5月结束 151天
6月结束 181天
7月结束 212天
8月结束 243天
9月结束 273天
10月结束 304天
11月结束 334天
12月结束 365天
假设数字是61
[code="java"]
num=61
int month;
int day;
if (num > 334) {
day = num % 334;
month = 11;
} else if (num > 304) {
day = num % 304;
month = 10;
}......
[/code]
用commons-lang最简单。
[code="java"]
DateUtils.addDays(new Date(year - 1900, 0, 1), day - 1);
[/code]
直接调用java API :D
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2012);
cal.set(Calendar.DAY_OF_YEAR, 32);
cal.getTime()//2012年2月1日