你们好,最近小未来发现有诸多的小伙伴们对于怎么计算一年的天数,一年的天数怎么确定这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
1、 在编写代码之前,要适当考虑如何计算,而不是拿到一个题目,打开编译器就立刻开始做。首先,我们需要一个时间类型来封装我们的年、月、日属性,我们需要一些计算天数的方法。
2、 公历年,要区分闰年和平年,那么首先要有一个判断是不是闰年的函数。其次,我们要计算2002年到2017年有多少个平年和闰年,然后再计算这些年过去了多少天。
3、 最后还要加上2017年6月23日已经发生的时间,即计算从元旦到6月23日用了多少天,相应减去高估,3个月10天。
4、 但是,这几个月,天数也有变化。理清逻辑后再编码。
5、 如上所述,我们需要封装时间类。
6、 package day2.homework1;
7、 public class MyDate {
8、 int year;
9、 int month;
10、 int day;
11、 public MyDate(int year, int month, int day) {
12、 super();
13、 this.year=year;
14、 this.month=month;
15、 this.day=day;
16、 }
17、 public int getYear() {
18、 return year;
19、 }
20、 public void setYear(int year) {
21、 this.year=year;
22、 }
23、 public int getMonth() {
24、 return month;
25、 }
26、 public void setMonth(int month) {
27、 this.month=month;
28、 }
29、 public int getDay() {
30、 return day;
31、 }
32、 public void setDay(int day) {
33、 this.day=day;
34、 }
35、 }
36、 其次,判断今年是不是闰年。
37、 /**
38、 *获取年份是否是闰年。
39、 * @param year
40、 * @return
41、 */
42、 public boolean checkLeap(int year) {
43、 boolean flag=false;
44、 if(0==year%40!=year%100||0==year%400)
45、 {
46、 flag=true;
47、 }
48、 return flag;
49、 }
50、 获取一年中的天数
51、 /**
52、 *获取一年中的天数
53、 * @param year
54、 * @return
55、 */
56、 public int getDaysOfYear(int year) {
57、 int count=365;
58、 if(checkLeap(year))
59、 {
60、 count=366;
61、 }
62、 return count;
63、 }
64、 获取一个月中的天数。
65、 /**
66、 *获取一个月中的天数
67、 * @param month
68、 * @return
69、 */
70、 public int getDaysOfMonth(int year,int month) {
71、 int count=0;
72、 switch(month)
73、 {
74、 case 1:
75、 count=31;
76、 break;
77、 case 2:
78、 if(checkLeap(year))
79、 {
80、 count=29;
81、 }
82、 else
83、 {
84、 count=28;
85、 }
86、 break;
87、 case 3:
88、 count=31;
89、 break;
90、 case 4:
91、 count=30;
92、 break;
93、 case 5:
94、 count=31;
95、 break;
96、 case 6:
97、 count=30;
98、 break;
99、 case 7:
100、 count=31;
101、 break;
102、 case 8:
103、 count=31;
104、 break;
105、 case 9:
106、 count=30;
107、 break;
108、 case 10:
109、 count=31;
110、 break;
111、 case 11:
112、 count=30;
113、 break;
114、 case 12:
115、 count=31;
116、 break;
117、 }
118、 return count;
119、 }
120、 根据计算方法实现我们的算法。
121、 public int getDays() {
122、 int count=0;
123、 /**
124、 *计算某年-某年的具体天数。
125、 */
126、 for(int i=date1.year;idate2.year;i++)
127、 {
128、 count+=getDaysOfYear(i);
129、 }
130、 /**
131、 *将去年的月份相加。
132、 */
133、 for(int i=1;idate2.month;i++)
134、 {
135、 count+=getDaysOfMonth(date2.year,i);
136、 }
137、 /**
138、 *去年加入的天数
139、 */
140、 count+=date2.day;
141、 /**
142、 *减去第一年的时间。
143、 */
144、 for(int i=1;idate1.month;i++)
145、 {
146、 count-=getDaysOfMonth(date1.year,i);
147、 }
148、 count-=date1.day;
149、 return count;
150、 }
151、 //源代码类
152、 package day2.homework1;
153、 public class MyCalendar {
154、 MyDate date1;
155、 MyDate date2;
156、 public MyCalendar(MyDate date1, MyDate date2) {
157、 super();
158、 this.date1=date1;
159、 this.date2=date2;
160、 }
161、 public int getDays() {
162、 int count=0;
163、 /**
164、 *计算某年-某年的具体天数。
165、 */
166、 for(int i=date1.year;idate2.year;i++)
167、 {
168、 count+=getDaysOfYear(i);
169、 }
170、 /**
171、 *将去年的月份相加。
172、 */
173、 for(int i=1;idate2.month;i++)
174、 {
175、 count+=getDaysOfMonth(date2.year,i);
176、 }
177、 /**
178、 *去年加入的天数
179、 */
180、 count+=date2.day;
181、 /**
182、 *减去第一年的时间。
183、 */
184、 for(int i=1;idate1.month;i++)
185、 {
186、 count-=getDaysOfMonth(date1.year,i);
187、 }
188、 count-=date1.day;
189、 return count;
190、 }
191、 /**
192、 * 获取每个月的天数
193、 * @param month
194、 * @return
195、 */
196、 public int getDaysOfMonth(int year,int month) {
197、 int count=0;
198、 switch(month)
199、 {
200、 case 1:
201、 count=31;
202、 break;
203、 case 2:
204、 if(checkLeap(year))
205、 {
206、 count=29;
207、 }
208、 else
209、 {
210、 count=28;
211、 }
212、 break;
213、 case 3:
214、 count=31;
215、 break;
216、 case 4:
217、 count=30;
218、 break;
219、 case 5:
220、 count=31;
221、 break;
222、 case 6:
223、 count=30;
224、 break;
225、 case 7:
226、 count=31;
227、 break;
228、 case 8:
229、 count=31;
230、 break;
231、 case 9:
232、 count=30;
233、 break;
234、 case 10:
235、 count=31;
236、 break;
237、 case 11:
238、 count=30;
239、 break;
240、 case 12:
241、 count=31;
242、 break;
243、 }
244、 return count;
245、 }
246、 /**
247、 * 获取某年的天数
248、 * @param year
249、 * @return
250、 */
251、 public int getDaysOfYear(int year) {
252、 int count=365;
253、 if(checkLeap(year))
254、 {
255、 count=366;
256、 }
257、 return count;
258、 }
259、 /**
260、 * 获取该年是否是闰年
261、 * @param year
262、 * @return
263、 */
264、 public boolean checkLeap(int year) {
265、 boolean flag=false;
266、 if(0==year%40!=year%100||0==year%400)
267、 {
268、 flag=true;
269、 }
270、 return flag;
271、 }
272、 }
273、 //我们编写测试类进行测试
274、 package day2.homework1;
275、 public class TestMyCalendar {
276、 public static void main(String[] args) {
277、 MyDate date1=new MyDate(2002,03,10);
278、 MyDate date2=new MyDate(2017,06,23);
279、 MyCalendar calendar=new MyCalendar(date1,date2);
280、 System.out.println(calendar.getDays());
281、 }
282、 }
以上就是一年的天数怎么确定这篇文章的一些介绍,希望对大家有所帮助。