pltdhll特别喜欢的日期是6月15日,因为这是一年中最中间的一天(pltdhll认为6是12的一半,15是30的一半,所以6月15日是一年最中间的一天)。 同时他也有其他喜欢的日期,比如2022年3月19日也就是今天,因为这是成都信息工程大学第一届团体程序设计天梯赛校赛的举办时间。 他突然想知道某个日期和今天相差的天数,但是手算太麻烦了,写代码的话他感觉代码量太多了,刚好今天遇见了正在看题干的你,想请你帮他完成这个程序。有些 日期太久远了,所以你只需要保证你的程序在1905年初(1905年01月01日)到2995年底(2995年12月31日)的正确性即可。 你的程序只要计算出pltdhll给你的日期与今天相差的天数,然后给出相应的提示语句即可。 注意,今天是2022年3月19日! 注意,今天是2022年3月19日! 注意,今天是2022年3月19日! 提示:闰年是公历中的名词,分为普通闰年和世纪闰年。公历年份是4的倍数的,且不是100的倍数,为普通闰年;公历年份是整百数的,必须是400的倍数才是世纪闰年。 输入格式: 在一行中给出一个八位数的日期,其格式为yyyymmdd,yyyy表示年,mm表示月,dd表示天。 题目保证所给日期在1905年初(1905年01月01日)到2995年底(2995年12月31日)之间。 输出格式: 根据下面提示以及相差的天数打印出相应的内容。 若所给日期在今天之前,则输出guo qv xx tian,其中xx表示相差天数。 若所给日期在今天之后,则输出hai you xx tian,其中xx表示相差天数。 若所给日期就是今天,则输出jiu shi jin tian! 输入样例1: 20220319 输出样例1: jiu shi jin tian! 输入样例2: 20220615 输出样例2: hai you 88 tian 输入样例3: 20210615 输出样例3: guo qv 277 tian
第一种:先把日期当中的年月日解析出来,然后getTime()求出该时间对应的毫秒值,最后两日期相减,再除以(1000*60*60*24)转换为相差天数
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; public class Main { public static void main(String[] args) throws ParseException { Scanner sc = new Scanner(System.in); String s = sc.nextLine(); if(s.equals("20220319")) System.out.println("jiu shi jin tian!"); else if(s.compareTo("20220319")>0) System.out.println("hai you "+day(s,"20220319")+" tian"); else System.out.println("guo qv "+day(s,"20220319")+" tian"); } public static int day(String s1,String s2) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); // 把年月日解析出来 Date t1 = sdf.parse(s1); Date t2 = sdf.parse(s2); // 计算时间对应的毫秒值 Long T1 = t1.getTime(); Long T2 = t2.getTime(); Long T = Math.abs(T1 - T2); // 相差的天数 return (int) (T/1000/60/60/24); } }
第二种:直接用运算符求出年月日的整形,然后利用LocalDate.of函数格式化日期,最后利用ChronoUnit.DAYS.between来求出两个日期隔了多少天。
import java.time.LocalDate; import java.time.temporal.ChronoUnit; import java.util.Scanner; public class Main2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); if(a == 20220319) System.out.println("jiu shi jin tian!"); else if (a >= 20220319) System.out.println("hai you "+days(a,20220319)+" tian"); else System.out.println("guo qv "+days(a,20220319)+" tian"); } public static int days(int t1,int t2){ int nian1 = t1/10000; int nian2 = t2/10000; int yue1 = t1%10000/100; int yue2 = t2%10000/100; int ri1 = t1%100; int ri2 = t2%100; LocalDate startDate = LocalDate.of(nian1,yue1,ri1); LocalDate endDate = LocalDate.of(nian2, yue2, ri2); int days = (int)Math.abs(ChronoUnit.DAYS.between(startDate, endDate)) ; return days; } }