java中非常用时间工具类(不常用,但很好用)

DateUtil

public class DateUtil {

    /**
     * 获取当前时间
     * @return
     */
    public static String getYMdHms(){
        Date dt = new Date();
        DateFormat df = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        String datetime = df.format(dt);
        return datetime;
    }

    /**
     * 获取当前时间
     * @return
     */
    public static String getCurrYMdHms(){
        Date dt = new Date();
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String datetime = df.format(dt);
        return datetime;
    }

    /**
     * 获取30,35分钟前的时间
     * @return
     */
    public static Map<String,String> getCurrYMdHms30min(int scDelayTime){
        Map<String,String> map = new HashMap<>();
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//时间格式
        //获取当前时间
        Calendar pCal = Calendar.getInstance();
        Calendar now =(Calendar)pCal.clone();
        //  nowTime=sf.format(now.getTime());
        now.add(Calendar.MINUTE, -scDelayTime);
        map.put("nowtime",sf.format(now.getTime()));
        now.add(Calendar.MINUTE, -5);
        map.put("nowtime2",sf.format(now.getTime()));
        return map;
    }

    /**
     * 获取当前时间的前一天
     * @return
     * @throws Exception
     */
    public static  String getYesterDay() throws Exception{
        Date dt = new Date();
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        String day = df.format(dt);
        Calendar c = Calendar.getInstance();
        c.setTime(df.parse(day));
        int day1 = c.get(Calendar.DATE);
        c.set(Calendar.DATE, day1 - 1);
        String dayAfter = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
        return dayAfter;
    }

    /**
     * 转换时间格式2019-02-261417
     * @param dateTime
     * @return
     */
    public static String changeTimeFormat(String dateTime){
        String time="";
        if(StringUtils.isNotBlank(dateTime)){
            String[] d=dateTime.split(" ");
            String[] t=d[1].split(":");
            time=d[0]+t[0]+t[1];
        }
        return time;
    }

    public static List<String> getBetweenDates(String start, String end) {

        List<String> result = new ArrayList<String>();

        try {

            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

            Date start_date = sdf.parse(start);

            Date end_date = sdf.parse(end);

            Calendar tempStart = Calendar.getInstance();

            tempStart.setTime(start_date);

            Calendar tempEnd = Calendar.getInstance();

            tempEnd.setTime(end_date);

            while (tempStart.before(tempEnd)||tempStart.equals(tempEnd)) {

                result.add(sdf.format(tempStart.getTime()));

                tempStart.add(Calendar.DAY_OF_YEAR, 1);

            }

        } catch (ParseException e) {

            e.printStackTrace();

        }

        Collections.reverse(result);

        return result;

    }

    /**
     * 获取指定年月的第一天
     * @return
     */
    public static String getFirstDayOfMonth(String yearMonth) {
        int year = Integer.parseInt(yearMonth.substring(0,4));  //年
        int month = Integer.parseInt(yearMonth.substring(5,6)); //月
        Calendar cal = Calendar.getInstance();
        //设置年份
        cal.set(Calendar.YEAR, year);
        //设置月份
        cal.set(Calendar.MONTH, month-1);
        //获取某月最小天数
        int firstDay = cal.getMinimum(Calendar.DATE);
        //设置日历中月份的最小天数
        cal.set(Calendar.DAY_OF_MONTH,firstDay);
        //格式化日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        return sdf.format(cal.getTime());
    }
    /*
    获取指定月份的最后一天
     */
    public static String getLastDayOfMonth(String yearMonth) {
        int year = Integer.parseInt(yearMonth.substring(0,4));  //年
        int month = Integer.parseInt(yearMonth.substring(5,6)); //月
        Calendar cal = Calendar.getInstance();
        // 设置年份
        cal.set(Calendar.YEAR, year);
        // 设置月份
        // cal.set(Calendar.MONTH, month - 1);
        cal.set(Calendar.MONTH, month); //设置当前月的上一个月
        // 获取某月最大天数
        //int lastDay = cal.getActualMaximum(Calendar.DATE);
        int lastDay = cal.getMinimum(Calendar.DATE); //获取月份中的最小值,即第一天
        // 设置日历中月份的最大天数
        //cal.set(Calendar.DAY_OF_MONTH, lastDay);
        cal.set(Calendar.DAY_OF_MONTH, lastDay - 1); //上月的第一天减去1就是当月的最后一天
        // 格式化日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        return sdf.format(cal.getTime());
    }

    /**
     * 获取一天中间隔30分钟的所有时间点
     *
     * @return
     */
    public static List<String> getTimeLag30Minute() throws  Exception{
        Date day=new Date();
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
        SimpleDateFormat format=new SimpleDateFormat("yyyyMMddHHmmss");
        String s = df.format(day);
        Date date = df.parse(s);
        ArrayList<String> dates = new ArrayList<String>();
        for (int i = 0; i < 124; i++) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
//            cal.add(Calendar.HOUR, 1);
            cal.add(Calendar.MINUTE, 30);

            date = cal.getTime();
            String s1 = format.format(date);
            dates.add(s1);
        }


        return dates;
    }

    //输出从当前时间获取整15分的时间
    //比如  10:00   10:15  10:30  11:00
    public static List<String> get30MinutesDate(String startDate)throws Exception {
        SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");//时间格式
        SimpleDateFormat sf2 = new SimpleDateFormat("yyyyMMddHHmm");//时间格式
        List<String>list=new ArrayList<>();
        Date sDate=sf.parse(startDate);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(sDate);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//时间格式
        int minutes = calendar.get(Calendar.MINUTE);// 得到分钟
        int count = 0;
        //时间不为00,15,30,45的情况
        if (minutes != 0 && minutes != 30 ) {
            //判断距离最近的00,15,30,45的分钟数
            for (int i = minutes; i >= 0; i--) {
                if (i % 30 == 0) {
                    break;
                } else {
                    count++;
                }
            }
        }
        if(count>0){
            count=(30-count);
        }else{
            count=30;
        }
        //获取距离最近的00,15,30,45的分钟数
//        calendar.add(Calendar.MINUTE, -count);
        calendar.add(Calendar.MINUTE, count);
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1;
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        int minute = calendar.get(Calendar.MINUTE);
//        System.out.println("[year: " + year + "][month: " + month + "][day: " + day + "][hour: " + hour + "][minute: " + minute + "]");
        String currentTime = "";
        currentTime = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + 0; //拼接将年月日时分秒
        try {
//            System.out.println("currentTime: " + currentTime);
            Date date = simpleDateFormat.parse(currentTime);
//            System.out.println("date: " + date);
            long millionSeconds = date.getTime(); // 时间转毫秒
            long length=(System.currentTimeMillis()-millionSeconds)/(30*60*1000);
            for (long i = 0; i <= length; i++) {
                //获取length次从当前时间到每隔15分钟之后的时间
                long dates = millionSeconds + i * (30 * 60 * 1000);
                //获取length次从当前时间到每隔15分钟之前的时间
                //long dates = millionSeconds - i * (15 * 60 * 1000);
//                System.out.println(simpleDateFormat.format(new Date(dates)));
                list.add(sf2.format(new Date(dates)));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }

    public static List<String> getBetweenTime(String starttime,String endtime)
    {
        List<String> betweenTime = new ArrayList<String>();
        try
        {
            Date sdate= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(starttime);
            Date edate= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(endtime);

            SimpleDateFormat outformat = new SimpleDateFormat("yyyyMMdd");

            Calendar sCalendar = Calendar.getInstance();
            sCalendar.setTime(sdate);
            int year = sCalendar.get(Calendar.YEAR);
            int month = sCalendar.get(Calendar.MONTH);
            int day = sCalendar.get(Calendar.DATE);
            sCalendar.set(year, month, day, 0, 0, 0);

            Calendar eCalendar = Calendar.getInstance();
            eCalendar.setTime(edate);
            year = eCalendar.get(Calendar.YEAR);
            month = eCalendar.get(Calendar.MONTH);
            day = eCalendar.get(Calendar.DATE);
            eCalendar.set(year, month, day, 0, 0, 0);

            while (sCalendar.before(eCalendar))
            {
                betweenTime.add(outformat.format(sCalendar.getTime()));
                sCalendar.add(Calendar.DAY_OF_YEAR, 1);
            }
            betweenTime.add(outformat.format(eCalendar.getTime()));
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        return betweenTime;
    }

    //格式转换
    public static String transferFormat(String inTime) throws ParseException{
        SimpleDateFormat s1 = new SimpleDateFormat("yyyy-MM-dd HH");
        SimpleDateFormat s2 = new SimpleDateFormat("yyyy-MM-dd");
        Date tempDate =null;
        String outTime = null;
        tempDate = s1.parse(inTime);
        outTime = s2.format(s2.parse(s1.format(tempDate)));
        return outTime;
    }

    public static String transferFormat2(String inTime) throws ParseException{
        SimpleDateFormat s1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat s2 = new SimpleDateFormat("yyyyMMdd");
        Date tempDate =null;
        String outTime = null;
        tempDate = s1.parse(inTime);
   //     outTime = s2.format(s2.parse(s1.format(tempDate)));
        outTime = s2.format(tempDate);
        return outTime;
    }

    public static void listSort(List<Map> list) {
        //用Collections这个工具类传list进来排序
        Collections.sort(list, new Comparator<Map>() {
            @Override
            public int compare(Map o1, Map o2) {
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                try {
                    Date dt1 = format.parse((String) o1.get("RECORD_TIME"));
                    Date dt2 = format.parse((String) o2.get("RECORD_TIME"));
                    if (dt1.getTime() > dt2.getTime()) {
                        return 1;//小的放前面
                    }else {
                        return -1;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return 0;
            }
        });
    }

    public static void listSortDate(List<Map> list) {
        //用Collections这个工具类传list进来排序
        Collections.sort(list, new Comparator<Map>() {
            @Override
            public int compare(Map o1, Map o2) {
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                try {
                    Date dt1 = format.parse((String) o1.get("RECORD_TIME"));
                    Date dt2 = format.parse((String) o2.get("RECORD_TIME"));
                    if (dt1.getTime() > dt2.getTime()) {
                        return 1;//小的放前面
                    }else {
                        return -1;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return 0;
            }
        });
    }


    public static List<String> getBetweenHours(String str1, String str2){
        List<String> list = new ArrayList<>();
        SimpleDateFormat sdf = new  SimpleDateFormat("yyyy-MM-dd HH");
        try {
            Date startdate= sdf.parse(str1);
            Date enddate = sdf.parse(str2);
            Calendar start = Calendar.getInstance();
            start.setTime(startdate);
            while (startdate.getTime()<=enddate.getTime()){
                list.add(sdf.format(startdate));
                start.add(Calendar.HOUR_OF_DAY,1);
                startdate = start.getTime();
            }
        }catch (ParseException e){
            e.printStackTrace();
        }
        return list;
    }

    public static List<String> getBetweenFiveMin(String str1, String str2){
        String min50=str1.split(":")[1];
        if(Integer.parseInt(min50)%5!=0){
            str1=str1.split(":")[0]+":"+min50.substring(0,1)+"0";
        }
        String min51=str2.split(":")[1];
        if(Integer.parseInt(min51)%5!=0){
            str2=str2.split(":")[0]+":"+min51.substring(0,1)+"5";
        }
        List<String> list = new ArrayList<>();
        SimpleDateFormat sdf = new  SimpleDateFormat("yyyy-MM-dd HH:mm");
        try {
            Date startdate= sdf.parse(str1);
            Date enddate = sdf.parse(str2);
            Calendar start = Calendar.getInstance();
            start.setTime(startdate);
            while (startdate.getTime()<=enddate.getTime()){
                list.add(sdf.format(startdate));
                start.add(Calendar.MINUTE,5);
                startdate = start.getTime();
            }
        }catch (ParseException e){
            e.printStackTrace();
        }
        return list;
    }

    public static void main(String[] args){
        List<String> list=getBetweenTime("2020-10-10 00:00:00","2020-10-16 23:59:59");
        for(int i=0;i<list.size();i++) {
            System.out.println("date:::" +list.get(i)+"==="+System.currentTimeMillis());
        }
        SimpleDateFormat sf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        Calendar pCal = Calendar.getInstance();
        String edata = "";
        String sdata = "";

        long time = 30*60*1000;
        Date now = new Date();

        Calendar now1 = (Calendar) pCal.clone();
        now1.add(Calendar.HOUR_OF_DAY, -1);
        edata = sf1.format(now1.getTime());
        sdata = sf1.format(new Date(now1.getTime().getTime()-time));
        edata = edata + ":59";
        sdata = sdata + ":00";

        System.out.println(edata+"=======edata==========sdata=="+sdata);


        List<String> mins = getBetweenFiveMin("2020-12-16 14:00:00","2020-12-16 14:30:59");
        for(String kk:mins){
            System.out.println("=======edata====66666======sdata=="+kk);
        }

        String str0="round(avg*{devgroupnum},0)";
        String format=str0.substring(6,9);
        String formatrex=str0.substring(9,10);
        String round=str0.split(",")[1].replace(")","");


        double money = 399.7555;
        DecimalFormat df=new DecimalFormat("#");
        System.out.println(Double.parseDouble(df.format(money)));

        double d1=0.0;
        double d2=0.0;
        double f=d1/d2;
        System.out.println("--------------"+f);
//System.out.println(format+"==============="+formatrex+"===="+round+"=="+it+"=="+kk);
    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

如我一般的人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值