计算机系统中使用的UTC时间基于原子钟,这种计时方式同“地球自转一周是24小时”的计时方式有微小的偏差。为了弥补这种偏差,我们偶尔需要增加一个“闰秒”。
最近的一次闰秒增加发生在UTC时间2016年的最后一天。我们在2016年12月31日23时59分59秒和2017年1月1日0时0分0秒之间增加了这样一秒:2016年12月31日23时59分60秒,记作2016-12-31 23:59:60。
目前一共增加了27次闰秒,具体添加的时间见下表:
给出两个时间,请你判断在考虑闰秒的情况下,这两个时间间隔多少秒。
两个时间各占一行,格式是yyyy-MM-dd HH:mm:ss,范围在1970-01-01 00:00:00至2017-03-12 23:59:59之间。保证第一个时间不晚于第二个时间。
两个时间间隔多少秒。
样例输入 2016-12-31 23:59:59 2017-01-01 00:00:00 样例输出 2如果用c++写的话 会比较烦 直接使用java里面的date可以直接求出来 然后根据已知的加闰秒的时间 对求出来的时间进行修改 得出最终的答案
在比赛中得了90分 但是很奇怪 感觉没问题
import java.sql.Date; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Scanner; public class Main { public static void main(String args[]) throws ParseException{ Scanner scanner=new Scanner(System.in); String string1=null; String string2=null; String string3=null; String string4=null; string1=scanner.next(); string2=scanner.next(); string3=scanner.next(); string4=scanner.next(); String s1=string1+" "+string2; String s2=string3+" "+string4; String s[]={"1972-06-30 23:59:60","1972-12-31 23:59:60","1973-12-31 23:59:60","1974-12-31 23:59:60", "1975-12-31 23:59:60","1976-12-31 23:59:60","1977-12-31 23:59:60","1978-12-31 23:59:60", "1979-12-31 23:59:60","1981-06-30 23:59:60","1982-06-30 23:59:60","1983-06-30 23:59:60", "1985-06-30 23:59:60","1987-12-31 23:59:60","1989-12-31 23:59:60","1990-12-31 23:59:60", "1992-06-30 23:59:60","1993-06-30 23:59:60","1994-06-30 23:59:60","1995-12-31 23:59:60", "1997-06-30 23:59:60","1998-12-31 23:59:60","2005-12-31 23:59:60","2008-12-31 23:59:60", "2012-06-30 23:59:60","2015-06-30 23:59:60","2016-12-31 23:59:60"}; // System.out.println(string1+" "+string2); // System.out.println(string3+" "+string4); DateFormat dfDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); java.util.Date[] d=new java.util.Date[27]; for(int i=0;i<27;i++) d[i]=dfDateFormat.parse(s[i]); java.util.Date d1=dfDateFormat.parse(string1+" "+string2); java.util.Date d2=dfDateFormat.parse(string3+" "+string4); long diff=d2.getTime()-d1.getTime(); int t=(int)(diff/1000); for(int i=0;i<27;i++){ // long diff1=d[i].getTime()-d1.getTime(); // long diff2=d[i].getTime()-d2.getTime(); // System.out.println("diff1: "+diff1+" diff2: "+diff2); // if(diff1>=0) // t=t+1; // if(diff2>=1000) // t=t-1;//答案有错 WA 这与下面的有不同的地方吗 很奇怪 if(s[i].compareTo(s1)>=0) t++; if(s[i].compareTo(s2)>=0) t--;//求出正确答案 } System.out.println(t); } }