hdu1201 java

题意:

求某人从出生到18岁生日所经过的天数。如果这个人没有18岁生日,就输出-1。

思路:

通过毫秒值计算天数。

利用:来自https://www.cnblogs.com/xiohao/p/5294412.html

Date fDate=sdf.parse("2015-12-31");
Date oDate=sdf.parse("2016-01-01");
long days=(oDate.getTime()-fDate.getTime())/(1000*3600*24);
//注意:如果时间为:2016-03-18 11:59:59 和 2016-03-19 00:00:01的话差值为 0

还有一种求天数差的方法方法:

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date fDate=sdf.parse("2015-12-31");
Date oDate=sdf.parse("2016-01-01");
Calendar aCalendar = Calendar.getInstance();
aCalendar.setTime(fDate);
int day1 = aCalendar.get(Calendar.DAY_OF_YEAR);
aCalendar.setTime(oDate);
int day2 = aCalendar.get(Calendar.DAY_OF_YEAR);
int days=day2-day1;

/*在不涉及到跨年的情况,此种方法是没问题的
     *  但是设计跨年的情况,此种方法回出问题的哦
      *
     * 如果时间为:2016-03-18 11:59:59 和 2016-03-19 00:00:01的话差值为 1
 */
 1 import java.text.ParseException;
 2 import java.text.SimpleDateFormat;
 3 import java.util.Date;
 4 import java.util.Scanner;
 5 
 6 public class Main{
 7 
 8     public static void main(String[] args) throws ParseException {
 9         Scanner scanner=new Scanner(System.in);
10         SimpleDateFormat fm=new SimpleDateFormat("yyyy-MM-dd");
11         int n=scanner.nextInt();
12         while(n-->0)
13         {
14             String bir=scanner.next();
15             String yearStr=bir.substring(0,4);
16             String monthStr=bir.substring(5,7);
17             String dayStr=bir.substring(8, 10);
18             int month=Integer.parseInt(monthStr);
19             int day=Integer.parseInt(dayStr);
20             
21             int year=Integer.parseInt(yearStr);
22             int after=year+18;
23             if(year%4==0||(year%100!=0&&year%400==0))//出生是闰年2.29
24             {//18岁不是闰年,就没有2.29
25                 if(month==2&&day==29&&!(after%4==0||(after%100!=0&&after%400==0)))
26                 {
27                     System.out.println("-1");
28                     continue;
29                 }
30             }
31             
32             Date bird=fm.parse(bir);
33             String ehString=String.valueOf(after);
34             ehString+="-";
35             ehString+=String.valueOf(month);
36             ehString+="-";
37             ehString+=String.valueOf(day);
38             Date eighteen=fm.parse(ehString);
39             
40             long res=(eighteen.getTime()-bird.getTime())/(1000*3600*24);
41             System.out.println(res);
42             
43         }
44     }
45 
46 }

猜你喜欢

转载自www.cnblogs.com/fudanxi/p/10721630.html