闰秒

题目1 : 闰秒

时间限制:10000ms

单点时限:1000ms

内存限制:256MB

描述

计算机系统中使用的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

使用dateformat

package Daily;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class Main_235 {

    int six [] = {1972,1981,1982,1983,1985,1992,1993,1994,1997,2012,2015};
    int twelve[] = {1972,1973,1974,1976,1977,1978,1979,1987,1989,1990,
    1995,1998,2005, 2008,2016};
    Main_235() {
        Scanner cin = new Scanner(System.in);
        String from = cin.nextLine().trim(), to = cin.nextLine().trim();
        if (from.equals(to)) {
            System.out.println(0);
            return;
        }

        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        List<String> dates = new LinkedList<>();
        for (int i : six) {
            dates.add(String.format("%d-06-30 23:59:60", i));
        }
        for (int i : twelve) {
            dates.add(String.format("%d-12-31 23:59:60", i));
        }
      try{
            long ans =0;
            Date beg =  format.parse(from) , end = format.parse(to);
            for(String i : dates){
                if(i.equals(from)){
                    ans ++;
                    beg.setTime(beg.getTime());
                }else if(i.equals(to)){
                    end.setTime(end.getTime());
                }
            }
            ans += (end.getTime() - beg.getTime())  / 1000;
            for(String i : dates){
                if(i.compareTo(from) > 0 && i.compareTo(to) < 0){
                    ans ++;
                }
            }
            System.out.println(ans);
      }catch (Exception e){
            e.printStackTrace();
      }
    }

    public static void main(String []args){
        new Main_235();
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_38970751/article/details/85451464
今日推荐