Java日期转换

主要讨论常见的几个问题

 //新建任意日期时间
 //新建当前日期某个时间前的日期
 //输出任意格式时间
 //计算某两个日期之间间隔月,周,天,秒
 //当前日期年的第几周/天,月的第几周/天
/*      yyyy:年
        MM:月
        dd:日
        hh:1~12小时制(1-12)
        HH:24小时制(0-23)
        mm:分
        ss:秒
        S:毫秒
        E:星期几
        D:一年中的第几天
        F:一月中的第几个星期(会把这个月总共过的天数除以7)
        w:一年中的第几个星期
        W:一月中的第几星期(会根据实际情况来算)
        a:上下午标识
        k:和HH差不多,表示一天24小时制(1-24)。
        K:和hh差不多,表示一天12小时制(0-11)。
        z:表示时区 */
        //新建任意日期 2022-09-27 11:06:03
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = simpleDateFormat.parse("2022-09-27 11:06:03");
        log.info("date:" + date);//date:Tue Sep 27 11:06:03 CST 2022
        //新建当前日期某个时间前的日期
        //一小时前
        //28天前
        //10个月前
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY)-1);
        calendar.set(Calendar.DAY_OF_YEAR,calendar.get(Calendar.DAY_OF_YEAR)-28);
        calendar.set(Calendar.MONTH,calendar.get(Calendar.MONTH)-10);
        Date datec = calendar.getTime();
        log.info("datec:"+datec);

        calendar.add(Calendar.DAY_OF_YEAR,+1);
        calendar.add(Calendar.MONTH,+1);

        Date datec2 = calendar.getTime();
        log.info("datec2:"+datec2);
        //输出任意格式时间
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss.SSS w");
        String formattime = simpleDateFormat1.format(System.currentTimeMillis());
        log.info(formattime);

        log.info("******************************");
        //计算某两个日期之间间隔月,周,天,秒
        Date datecal1 = simpleDateFormat.parse("2022-09-27 11:06:03");
        Date datecal2 = simpleDateFormat.parse("2021-05-14 16:06:03");
        LocalDate localDate1 = LocalDate.of(2022,9,27);
        LocalDate localDate2 = LocalDate.of(2021,5,14);
        Period next = Period.between(localDate2,localDate1);
        long days = next.getDays();
        long month = next.getMonths();
        long years = next.getYears();
        log.info("days:{},month:{},years:{}",days,month,years);
        //date转换成localdate
/*      Date date = new Date();
        LocalDate localDate = date.toInstant()
                .atZone(ZoneId.systemDefault())	//设置当前系统时区
                .toLocalDate();
        //localdate转换成date
        LocalDate localDate = LocalDate.now();
        Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());*/

         long time1 = datecal1.getTime();
         long time2 = datecal2.getTime();
         long subtract = time1-time2;
         long days2 = subtract/(60*60*24);


        log.info("******************************");
        //当前日期年的第几周/天,月的第几周/天 2021-11-30T00:00:00.000Z
        Calendar cal = Calendar.getInstance();
        cal.set(2021,0,1);
        int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
        calendar.setFirstDayOfWeek(dayofweek);//calendar.setFirstDayOfWeek(Calendar.SATURDAY);周日为周第一天
        int week = calendar.get(Calendar.WEEK_OF_YEAR);
        int day = calendar.get(Calendar.DAY_OF_YEAR);
        int mweek = calendar.get(Calendar.WEEK_OF_MONTH);
        int mday = calendar.get(Calendar.DAY_OF_MONTH);
        log.info("week:{},day:{},mweek{},mday{}",week,day,mweek,mday);
posted @ 2022-09-27 18:02  yorkiiz  阅读(521)  评论(0编辑  收藏  举报