时间格式转换、类型转换、计算时间差

public class LocalDateUtil {

    public static String getCron(LocalDateTime localDateTime) {
        ZoneId zoneId = ZoneId.systemDefault();
        ZonedDateTime zdt = localDateTime.atZone(zoneId);
        Date date = Date.from(zdt.toInstant());
        SimpleDateFormat sdf = new SimpleDateFormat("ss mm HH dd MM ? yyyy");
        return sdf.format(date);
    }

    public static String getyyyyMMdd(LocalDateTime localDateTime) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        return localDateTime.format(formatter);
    }

    public static String getdd() {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd");
        return LocalDate.now().format(formatter);
    }

    public static String getdd(int day) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd");
        return LocalDate.now().plusDays(day).format(formatter);
    }

    public static String getHHmm() {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
        return LocalDateTime.now().format(formatter);
    }

    public static String getHHmm(LocalDateTime localDateTime) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
        return localDateTime.format(formatter);
    }

    public static String getYYYYMMdd() {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        return LocalDate.now().format(formatter);
    }

    public static String getYYYYMMddFilePath() {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
        return LocalDate.now().format(formatter);
    }

    public static String getyyyyMMdd(LocalDate localDate) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        return localDate.format(formatter);
    }

    public static long getStartSecond(LocalDate localDate) {
        LocalDateTime localDateTime = LocalDateTime.of(localDate, LocalTime.of(0, 0, 0));
        return localDateTime.atZone(ZoneId.systemDefault()).toInstant().getEpochSecond();
    }

    public static long getEndSecond(LocalDate localDate) {
        LocalDateTime localDateTime = LocalDateTime.of(localDate, LocalTime.of(23, 59, 59));
        return localDateTime.atZone(ZoneId.systemDefault()).toInstant().getEpochSecond();
    }

    public static LocalDate getyyyyMMdd(String YYYYMMdd){
        try {
            String[] split = YYYYMMdd.split("-");
            return LocalDate.of(Integer.valueOf(split[0]), Integer.valueOf(split[1]), Integer.valueOf(split[2]));
        }catch (Exception e){
            throw new InfoException("日期格式有误,请检查");
        }
    }

    public static LocalDateTime getyyyyMMddTime(String YYYYMMdd) {
//        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("YYYY-MM-dd");
//        LocalDate parse = LocalDate.parse(YYYYMMdd, formatter);
        return LocalDateTime.parse(YYYYMMdd, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
    }

    public static String getYYYYMMddNumber() {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
        return LocalDateTime.now().format(formatter);
    }

    public static String getYYYYMMddmmNumber() {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddmm");
        return LocalDateTime.now().format(formatter);
    }

    public static String getYYYYMMddHHmmss() {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        return LocalDateTime.now().format(formatter);
    }

    public static String getyyyyMMddHHmmss(LocalDateTime localDateTime) {
        if (CheckUtil.isEmpty(localDateTime)) return null;
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        return localDateTime.format(formatter);
    }

    public static String getyyyyMMddHHmmss(Date date) {
        if (CheckUtil.isEmpty(date)) return null;
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return format.format(date);
    }

    public static LocalDateTime getyyyyMMddHHmmss(String charSequence) {
        return LocalDateTime.parse(charSequence);
    }

    public static String getYYYYMMddHHmmssNumber() {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
        return LocalDateTime.now().format(formatter);
    }

    public static void compareDate(String startDate, String endDate) {
        LocalDateTime parse1 = LocalDateTime.parse(startDate, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        LocalDateTime parse2 = LocalDateTime.parse(endDate, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

        if (parse1.isAfter(parse2)){
            throw new InfoException("开始时间不可大于结束时间!");
        }
    }

    public static LocalDateTime beginOfYear(LocalDateTime now) {
        return LocalDateTime.of(now.getYear(), 1, 1, 0, 0, 0);
    }

    public static LocalDateTime endOfYear(LocalDateTime now) {
        return LocalDateTime.of(now.getYear(), 12, 31, 23, 59, 59);
    }

    public static LocalDateTime beginOfQuarter(LocalDateTime now) {
        int i = (now.getMonthValue() - 1) / 3 * 3 + 1;
        return LocalDateTime.of(now.getYear(), i, 1, 0, 0, 0);
    }

    public static LocalDateTime endOfQuarter(LocalDateTime now) {
        int i = (now.getMonthValue() - 1) / 3 * 3 + 3;
        LocalDateTime localDateTime = LocalDateTime.of(now.getYear(), i, 1, 23, 59, 59);
        return localDateTime.with(TemporalAdjusters.lastDayOfMonth());
    }

    public static LocalDateTime beginOfMonth(LocalDateTime now) {
        LocalDateTime localDateTime = LocalDateTime.of(now.getYear(), now.getMonthValue(), 1, 0, 0, 0);
        return localDateTime.with(TemporalAdjusters.firstDayOfMonth());
    }

    public static LocalDateTime endOfMonth(LocalDateTime now) {
        LocalDateTime localDateTime = LocalDateTime.of(now.getYear(), now.getMonthValue(), 1, 23, 59, 59);
        return localDateTime.with(TemporalAdjusters.lastDayOfMonth());
    }

    public static Long between(LocalDateTime beginDate, LocalDateTime endDate) {
        Period between = Period.between(beginDate.toLocalDate(), endDate.toLocalDate());
        return (long) between.getDays();
    }

    public static LocalDateTime beginOfWeek(LocalDateTime now) {
        DayOfWeek[] values = DayOfWeek.values();
        LocalDateTime localDateTime = LocalDateTime.of(now.getYear(), now.getMonthValue(), 1, 0, 0, 0);
        return localDateTime.with(values[0]);
    }

    public static LocalDateTime endOfWeek(LocalDateTime minusWeeks) {
        DayOfWeek[] values = DayOfWeek.values();
        LocalDateTime localDateTime = LocalDateTime.of(minusWeeks.getYear(), minusWeeks.getMonthValue(), 1, 23, 59, 59);
        return localDateTime.with(values[6]);
    }

    public static LocalDateTime getBeginOfLastDay(LocalDateTime now) {
        now = now.plusDays(-1);
        return LocalDateTime.of(now.getYear(), now.getMonthValue(), now.getDayOfMonth(), 0, 0, 0);
    }
    public static LocalDateTime getEndOfLastDay(LocalDateTime now) {
        now = now.plusDays(-1);
        return LocalDateTime.of(now.getYear(), now.getMonthValue(), now.getDayOfMonth(), 23, 59, 59);
    }

    public static boolean isLeapYear(Integer year) {
        if ((year & 3) != 0) {
            return false;
        }
        return (year % 100 != 0) || (year % 400 == 0); // Gregorian
    }

    //一天剩余的分钟数
    public static int getDayOfLastM(){
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime time = LocalDateTime.of(now.getYear(), now.getMonthValue(), now.getDayOfMonth(), 23, 59, 59);
        long second = time.atZone(ZoneId.systemDefault()).toInstant().getEpochSecond();
        long epochSecond = now.atZone(ZoneId.systemDefault()).toInstant().getEpochSecond();
        long m = (second - epochSecond) / 60;
        return (int)m;
    }

    public static void main(String[] args) {
        System.out.println(getHHmm());
    }


//    public static void main(String[] args) {
//        LocalDateTime time = LocalDateTime.now();
//        int i =(3- 1)/3 * 3 + 1;
//        System.out.println(i);
//        System.out.println(time.toString()); //字符串表示
//        System.out.println(time.toLocalTime()); //获取时间(LocalTime)
//        System.out.println(time.toLocalDate()); //获取日期(LocalDate)
//        System.out.println(time.getDayOfMonth()); //获取当前时间月份的第几天
//        System.out.println(time.getDayOfWeek());  //获取当前周的第几天
//        System.out.println(time.getDayOfYear());  //获取当前时间在该年属于第几天
//        System.out.println(time.getHour());
//        System.out.println(time.getMinute());
//        System.out.println(time.getMonthValue());
//        System.out.println(time.getMonth());
//        System.out.println("-----------------------------------");
//        //格式化输出
//        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("YYYY/MM/dd HH:mm:ss");
//        System.out.println(time.format(formatter));
//        //构造时间
//        LocalDateTime startTime = LocalDateTime.of(2018, 1, 1, 20, 31, 20);
//        LocalDateTime endTime = LocalDateTime.of(2018, 1, 3, 20, 31, 20);
//        //比较时间
//        System.out.println(time.isAfter(startTime));
//        System.out.println(time.isBefore(endTime));
//
//        //时间运算,相加相减
//        System.out.println(time.plusYears(2)); //加2年
//        System.out.println(time.plusDays(2)); //加两天
//        System.out.println(time.minusYears(2)); //减两年
//        System.out.println(time.minusDays(2)); //减两天
//
//        //获取毫秒数(使用Instant)
//        System.out.println(time.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
//        //获取秒数(使用Instant)
//        System.out.println(time.atZone(ZoneId.systemDefault()).toInstant().getEpochSecond());
//    }

}

类型转换

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;
import java.util.TimeZone;

LocalDateTime 转 Date

        ZoneId zoneId = ZoneId.systemDefault();
        LocalDateTime localDateTime = LocalDateTime.now();
        ZonedDateTime zdt = localDateTime.atZone(zoneId);

        Date date = Date.from(zdt.toInstant());

        System.out.println("LocalDateTime = " + localDateTime);
        System.out.println("Date = " + date);

Date 转 LocalDateTime

 Date date = new Date();
        Instant instant = date.toInstant();
        ZoneId zoneId = ZoneId.systemDefault();
 
        LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
        System.out.println("Date = " + date);
        System.out.println("LocalDateTime = " + localDateTime);

时间差

import java.time.*;

    public static void main(String[] args) {
        LocalDateTime time1 = LocalDateTime.of(2020, 1, 7, 10, 30, 30);
        LocalDateTime time2 = LocalDateTime.of(2020, 1, 7, 11, 30, 30);
        Duration between = Duration.between(time1, time2);
        long seconds = between.getSeconds();
        System.out.println(between.toMillis());// 毫秒
        System.out.println(seconds);
        System.out.println(between.toMinutes());
        System.out.println(between.toHours());
        System.out.println(between.toDays());
    }

DATE日期计算

import java.util.Calendar;
import java.util.Date;

		// 当前时间
        Date date = new Date();
        //Calendar 类计算时间
        Calendar rightNow = Calendar.getInstance();
        rightNow.setTime(date);
        //加两小时
        rightNow.add(Calendar.HOUR,2);
        Date time = rightNow.getTime();
        //减十天
        rightNow.add(Calendar.DAY_OF_YEAR, -10);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值