问题描述
一年有365天或366天给你从1-366个数字中的一个然后再给你一个年份如2012,2011然后你得出是这个年份的几月几日例子天数是:32年数是2012结果是2012年2月1日天数是:61年数是2012结果是2012年3月1日 问题补充:直接调JAVA API的不行哈,我是在IOS平台下面
解决方案
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);}}
解决方案二:
直接调用java APICalendar cal=Calendar.getInstance();cal.set(Calendar.YEAR, 2012);cal.set(Calendar.DAY_OF_YEAR, 32); cal.getTime()//2012年2月1日
解决方案三:
用commons-lang最简单。DateUtils.addDays(new Date(year - 1900, 0, 1), day - 1);
解决方案四:
首先,根据年份能知道这一年是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天假设数字是61num=61int month;int day;if (num > 334) { day = num % 334; month = 11;} else if (num > 304) { day = num % 304; month = 10;}......