时间工具类

    public static Date changeZoneId(Date date, ZoneId old, ZoneId newZId) {
        //java.util.Date 类不存储时区信息,它总是以默认时区表示
        ZonedDateTime zonedDateTime = date.toInstant().atZone(ZoneId.systemDefault()).withZoneSameLocal(old);
        return Date.from(zonedDateTime.toInstant().atZone(newZId).toInstant());
    }
    
    public static LocalDateTime convertToLocalDateTime(Date date) {
        Instant instant = date.toInstant();
        return instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
    }

    public static Date convertToDate(LocalDateTime localDateTime) {
        Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
        return Date.from(instant);
    }
    public static String format(Date date, String dateFormat, TimeZone timeZone) {
        SimpleDateFormat df = new SimpleDateFormat(dateFormat);
        df.setTimeZone(timeZone);
        return df.format(date);
    }

    public static Date parse(String date, String dateFormat, TimeZone timeZone) {
        try {
            SimpleDateFormat df = new SimpleDateFormat(dateFormat);
            df.setTimeZone(timeZone);
            return df.parse(date);
        } catch (ParseException var4) {
            ParseException e = var4;
            throw new IllegalArgumentException(e);
        }
    }
        /**
     * 一天的开始时间 00:00:00
     */
    public static LocalDateTime startOfDay(LocalDateTime localDateTime) {
        LocalDate localDate = localDateTime.toLocalDate();
        return LocalDateTime.of(localDate, LocalTime.MIDNIGHT);
    }

    /**
     * 一天的结束时间 23:59:59
     */
    public static LocalDateTime endOfDay(LocalDateTime localDateTime) {
        LocalDate localDate = localDateTime.toLocalDate();
        return LocalDateTime.of(localDate, LocalTime.MAX);
    }
    public static Date getUtcDate(Date localDate) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(localDate);
        cal.add(14, -TimeZone.getDefault().getRawOffset());
        return cal.getTime();
    }

    public static Date getUtcDate(Date date, String timeZone) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        int zoneOffset = cal.get(15);
        int dstOffset = cal.get(16);
        cal.add(14, -(zoneOffset + dstOffset));
        TimeZone tZone = TimeZone.getTimeZone(timeZone);
        cal.setTimeZone(tZone);
        return cal.getTime();
    }

    public static int getYear(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(1);
    }

    public static int getMonth(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(2) + 1;
    }

    public static int getDay(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(5);
    }

    public static int getWeek(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        int week = cal.get(7);
        return week == 1 ? 7 : week - 1;
    }

    public static int getDayOfWeek() {
        Calendar now = Calendar.getInstance();
        boolean isFirstSunday = now.getFirstDayOfWeek() == 1;
        int weekDay = now.get(7);
        if (isFirstSunday) {
            --weekDay;
            if (weekDay == 0) {
                weekDay = 7;
            }
        }

        return weekDay;
    }

    public static int getDayOfWeek(Calendar now) {
        boolean isFirstSunday = now.getFirstDayOfWeek() == 1;
        int weekDay = now.get(7);
        if (isFirstSunday) {
            --weekDay;
            if (weekDay == 0) {
                weekDay = 7;
            }
        }

        return weekDay;
    }

    public static int getHour(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(11);
    }

    public static int getMinute(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(12);
    }

    public static int getSecond(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(13);
    }

    public static int getMillis(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(14);
    }

    public static Date getMonthEnd(Date date) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.set(14, 0);
        c.set(13, 0);
        c.set(12, 0);
        c.set(11, 0);
        c.set(5, 1);
        c.add(2, 1);
        c.add(5, -1);
        return c.getTime();
    }

    public static int getMonthDays(Date date) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        int year = c.get(1);
        int month = c.get(2);
        return getMonthDays(year, month);
    }

    public static int getMonthDays(int year, int month) {
        int days = 31;
        switch (month) {
            case 2:
                days = isLeapYear(year) ? 29 : 28;
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            default:
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                days = 30;
        }

        return days;
    }

    public static int getMonthTotalDay(Date date) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        int year = c.get(1);
        int month = c.get(2) + 1;
        int days = 31;
        switch (month) {
            case 2:
                days = isLeapYear(year) ? 29 : 28;
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            default:
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                days = 30;
        }

        return days;
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值