你们好,最近小未来发现有诸多的小伙伴们对于怎么计算一年的天数,一年的天数怎么确定这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
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、}
以上就是一年的天数怎么确定这篇文章的一些介绍,希望对大家有所帮助。
上一篇:锐捷网络为2023首届大湾区信息网络安全大会保驾护航
下一篇:最后一页
记者从河南省教育考试院了解到,鉴于目前疫情防控严峻形势,为维护广大考生健康安全,经研究并报教育部有关部门批准,河南省原定于6月11日
尖嘴猴腮是人们对猴子的固有认识,但凡事都有例外,最近,郑州市动物园就有一只猴因长着一张方方正正的脸,被送外号人脸猴,其独特的长相令
中原区民政局提醒:尽量避免扎堆,只要感情好,每一天都是好日子5月20日因谐音我爱你,成为很多新人眼中寓意美好的好日子。为满足准新人们
5月19日是中国旅游日,今年中国旅游日的活动主题为感悟中华文化享受美好旅程。记者今日从省、市文旅部门获悉,为进一步提振行业发展信心,
浊波浩浩东倾,今来古往无终极。在中国所有的大江大河中,无论从地理空间还是文化意义上来说,黄河都是一个独特的存在。如果从高空中俯瞰,
在第46个国际博物馆日当天,国家十三五重点文化工程、位于河南洛阳的隋唐大运河文化博物馆,正式面向公众开放。隋唐大运河始建于公元605年
想要了解郑州这片沃土流淌着的文化脉络吗?想要寻找郑州是最早中国历史起源的佐证吗?5月18日国际博物馆日,由郑州市委网信办指导,新浪河
5月18日0—24时,吉林省新增本地确诊病例6例(轻型),其中延边州3例,白山市3例(含2例无症状感染者转为确诊病例);新增本地无症状感染者
2022年5月18日0—24时,天津市新增7例本土新冠肺炎确诊病例(其中4例为无症状感染者转为确诊病例)。新增1例境外输入性新冠肺炎确诊病例。