你们好,最近小未来发现有诸多的小伙伴们对于怎么计算一年的天数,一年的天数怎么确定这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
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首届大湾区信息网络安全大会保驾护航
下一篇:最后一页
X 关闭
-
【全球报资讯】“集装箱美食城”数十商家涉无证经营,街道办:相关部门已下令整改
在成都市双流区锦江路四段,四川文化产业职业学院旁,麻辣烫、面条、炒饭等餐饮商家聚集在此。大大小小的二三十个集装箱就是他们的“门面”,
-
永乐社区开展“中国航天日”主题活动_快报
在第八个“中国航天日”到来之际,南谯区永乐社区新时代文明实践站组织辖区未成年人开展“科技新创想童心向未来”主题活动。活动中,志愿者为
-
other than是什么意思 other是什么意思 当前信息
1、theother,是另一个的意思。2、other意思是“另一”、“另一些”,有复数形式,在句子中可作主语、宾语和定
-
世界今头条!商务部部长王文涛与法国外交部外贸部长级代表贝什特举行会谈
证券时报e公司讯,4月21日上午,商务部部长王文涛在巴黎与法国外交部外贸部长级代表贝什特举行会谈,就落实中法元首经贸共识、扩大双边贸易投
-
维生素b族最佳服用时间_b族维生素什么时候吃最好-环球聚焦
1、一般建议在饭后吃,大概是间隔半小时的时间,在午饭之后人体的消化系统的能力加强,是能够充分的吸收人体内的营养物质,而且
-
全球热头条丨美国叙利亚战争是怎么打的_美国叙利亚战争原因
1、美国和英国法国打击叙利亚,原因如下:美国这是在显示自己决心和强硬,毕竟在美国国内,喜欢俄罗斯和叙利亚的只是极少数,而
-
天天要闻:突发!地震了 广东多地有震感!
今天(4月22日),据中国地震台网正式测定,4月22日13时4分在台湾海峡南部发生4 7级地震,震源深度10公里,震中位于北纬22 57度,东经118 47度
-
体坛联播|阿森纳惨遭英超三连平,樊振东爆冷不敌法国选手 当前通讯
这也让阿森纳的夺冠形势岌岌可危——阿森纳在多赛两场的情况下,仅领先曼城5分,下轮两队将迎来直接对话。据统计,这是阿森纳本赛季英超第三次
-
消毒灭菌的方法有哪些_消毒灭菌的方法介绍
欢迎观看本篇文章,小柴来为大家解答以上问题。消毒灭菌的方法有哪些,消毒灭菌的方法介绍很多人还不知道,现在让我们一起来看看
-
关于黄山的资料简介_有关黄山的介绍 速读
欢迎观看本篇文章,小勉来为大家解答以上问题。关于黄山的资料简介,有关黄山的介绍很多人还不知道,现在让我们一起来看看吧!1