zoukankan      html  css  js  c++  java
  • 从一段时间段中获取所有日期

    写的一个工具,从一个时间段内获取这些详细的日期list

      1     
      2      /**
      3      * 从一段日期中,获取每个日期在整个时间段内的占比
      4      * ---------------------------------------------------------------------
      5      * -- Example:<br>
      6      * -- 输入 20190313 12:00:00 和 20190315 12:00:00 
      7      * -- 输出 [20190313,0.25] [20190314,0.5] [20190315,0.25] 
      8      * --------------------------------------------------------------------- 13      */
     14     public static HashMap<String, Double> getDateAndRate(String stime,String etime) throws ParseException{
     15         HashMap<String, Double> map=new HashMap<String, Double>();
     16         SimpleDateFormat df=new SimpleDateFormat("yyyyMMdd HH:mm:ss");
     17         long s0=df.parse(stime).getTime();
     18         long s1=df.parse(etime).getTime();
     19         long all=s1-s0;
     20         
     21         ArrayList<String> list =getDateListBetween2Day(stime,etime);
     22         if(list.size()==1) {
     23             map.put(list.get(0), 1.00D);
     24         }else {
     25             for(int i=1;i<list.size()-1;i++) {
     26                 double res=86400000.00D/all;
     27                 map.put(list.get(i), res);
     28             }
     29             Double s0_rate=1.00D*getSecondEnd(s0)/all;
     30             map.put(list.get(0), s0_rate);
     31             Double s1_rate=1.00D*getSecondStart(s1)/all;
     32             map.put(list.get(list.size()-1), s1_rate);
     33         }
     34         return map;
     35     }
     36     
     37     /**
     38      * 从一段时间段中获取所有日期
     39      * ---------------------------------------------------------------------
     40      * -- Example:
     41      * -- 输入 20190313 12:00:00 和 20190315 12:00:00 
     42      * -- 输出 20190313 20190314 20190315 
     43      * --------------------------------------------------------------------- 48      */
     49     public static ArrayList<String> getDateListBetween2Day(String stime,String etime) throws ParseException{
     50         return getDateListBetween2Day(stime,etime,"yyyyMMdd");
     51     }
     52     
     53     public static ArrayList<String> getDateListBetween2Day(String stime,String etime,String date_pattern) throws ParseException{
     54         ArrayList<String> list= new ArrayList<String>();
     55         SimpleDateFormat df=new SimpleDateFormat(date_pattern);
     56         Calendar cal = Calendar.getInstance();
     57         Date sdate=df.parse(stime);
     58         Date edate=df.parse(etime);
     59         cal.setTime(sdate);
     60             while(edate.after(sdate)) {
     61                 list.add(df.format(sdate));
     62                 cal.add(Calendar.DAY_OF_MONTH,1);
     63                 sdate=cal.getTime();
     64             }
     65             list.add(df.format(edate));
     66         return list;
     67     }
     68     
     69     /**
     70      * 获取该时间戳距当天结束的时间
     71      * ---------------------------------------------------------------------
     72      * -- Example:<br>
     73      * -- 输入 20190313 12:00:00 的longtime值
     74      * -- 输出 20190313 12:00:00距20190313 24:00:00的毫秒差
     75      * ---------------------------------------------------------------------
     78      */
     79     public static long getSecondEnd(long longdate){
     80           Calendar cal = Calendar.getInstance();
     81           cal.setTimeInMillis(longdate);
     82           cal.set(Calendar.HOUR_OF_DAY, 24);
     83           cal.set(Calendar.MINUTE, 0);
     84           cal.set(Calendar.SECOND, 0);
     85           long max =cal.getTimeInMillis();
     86         return max-longdate;
     87     }
     88     
     89    /**
     90      *  获取该时间戳距当天开始的时间  
     91      * ---------------------------------------------------------------------
     92      * -- Example:
     93      * -- 输入 20190313 12:00:00 的longtime值
     94      * -- 输出 20190313 12:00:00距20190313 00:00:00的毫秒差
     95      * ---------------------------------------------------------------------
     98      */
     99     public static long getSecondStart(long longdate){
    100         Calendar cal = Calendar.getInstance();
    101           cal.setTimeInMillis(longdate);
    102           cal.set(Calendar.HOUR_OF_DAY, 0);
    103           cal.set(Calendar.MINUTE, 0);
    104           cal.set(Calendar.SECOND, 0);
    105           long min =cal.getTimeInMillis();
    106       return longdate-min;
    107   }
  • 相关阅读:
    Eclipse快捷键大全(转载)
    为什么你应该(从现在开始就)写博客 via刘未鹏
    Hadoop琐记
    详解MANIFEST.MF文件
    脚本语言琐记
    因为此版本的应用程序不支持其项目类型(.csproj) .
    求助:关于Activator.CreateInstance
    打印网页指定区域
    CSS中的行为——expression
    ASP.NET使用mysql数据库
  • 原文地址:https://www.cnblogs.com/yanghaolie/p/10559798.html
Copyright © 2011-2022 走看看