Java8时间工具类

import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class DateUtil {
private static final Logger log = LoggerFactory.getLogger(DateUtil.class);
public static final DateTimeFormatter DATE_TIME_FORMATTER_1 = DateTimeFormatter.ofPattern(“yyyyMMdd HHmmss”);
public static final DateTimeFormatter DATE_TIME_FORMATTER_2 = DateTimeFormatter.ofPattern(“yyyyMMdd”);
public static final DateTimeFormatter DATE_TIME_FORMATTER_3 = DateTimeFormatter.ofPattern(“yyyy-MM-dd”);
public static final DateTimeFormatter DATE_TIME_FORMATTER_4 = DateTimeFormatter.ofPattern(“yyyyMMddHHmmss”);
public static final DateTimeFormatter DATE_TIME_FORMATTER_5 = DateTimeFormatter.ofPattern(“yyyy年MM月dd日HH:mm:ss”);
public static final DateTimeFormatter DATE_TIME_FORMATTER_6 = DateTimeFormatter.ofPattern(“yyyy-MM-dd HH:mm:ss.S”);
public static final DateTimeFormatter DATE_TIME_FORMATTER_7 = DateTimeFormatter.ofPattern(“yyyy-MM-dd HH:mm:ss.SSS”);
public static final DateTimeFormatter DATE_TIME_FORMATTER_8 = DateTimeFormatter.ofPattern(“yyyy-MM-dd HH:mm:ss”);
public static final DateTimeFormatter DATE_TIME_FORMATTER_9 = DateTimeFormatter.ofPattern(“yyyy年MM月dd日”);
public static final DateTimeFormatter DATE_TIME_FORMATTER_10 = DateTimeFormatter.ofPattern(“yyyy年M月dd日”);
public static final Integer SECOND_OF_MINUTE = 60;

public DateUtil() {
}

public static String convertTimestamp2YyyyMMddHHmmss(Long timestamp) {
    return LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), ZoneId.systemDefault()).format(DATE_TIME_FORMATTER_8);
}

public static boolean beforTodayFormat3(String dateStr) {
    LocalDate date = LocalDate.parse(dateStr, DATE_TIME_FORMATTER_3);
    return LocalDate.now().isAfter(date);
}

public static LocalDate convertyyyyMMdd2LocalDate(String dateString) {
    return LocalDate.parse(dateString, DATE_TIME_FORMATTER_2);
}

public static LocalDate convertyyyyMMddWithHyphen2LocalDate(String dateString) {
    return LocalDate.parse(dateString, DATE_TIME_FORMATTER_3);
}

public static LocalDate convertyyyyMMddHHmmss2LocalDate(String dateString) {
    return LocalDate.parse(dateString, DATE_TIME_FORMATTER_8);
}

public static LocalDate convertyyyyMMddHHmmssS2LocalDate(String dateString) {
    return LocalDate.parse(dateString, DATE_TIME_FORMATTER_6);
}

public static LocalDate convertyyyyMMddHHmmssSSS2LocalDate(String dateString) {
    return LocalDate.parse(dateString, DATE_TIME_FORMATTER_7);
}

public static LocalDateTime convertyyyyMMdd2LocalDateTime(String dateString) {
    return LocalDateTime.parse(dateString, DATE_TIME_FORMATTER_3);
}

public static LocalDateTime convertyyyyMMddHHmmss2LocalDateTime(String dateString) {
    return LocalDateTime.parse(dateString, DATE_TIME_FORMATTER_8);
}

public static LocalDateTime convertyyyyMMddHHmmssS2LocalDateTime(String dateString) {
    return LocalDateTime.parse(dateString, DATE_TIME_FORMATTER_6);
}

public static LocalDateTime convertyyyyMMddHHmmssSSS2LocalDateTime(String dateString) {
    return LocalDateTime.parse(dateString, DATE_TIME_FORMATTER_7);
}

public static Date addSeconds(Date date, Long seconds) {
    LocalDateTime expDateTime = convertDate2LocalDateTime(date).plusSeconds(seconds);
    return convertLocalDateTime2Date(expDateTime);
}

public static int getDiffDay(Date dateFrom, Date dateTo) {
    long diffTime = dateFrom.getTime() - dateTo.getTime();
    long diff = diffTime / 86400000L;
    return (int)diff;
}

public static String dateIntervalHourMinForDate(Date date1, Date date2) {
    try {
        if (date1 != null && date2 != null) {
            return coreDateIntervalHourMin(date1, date2);
        }
    } catch (Exception var3) {
        log.error("计算时间差 error", var3);
    }

    return "";
}

public static String coreDateIntervalHourMin(Date date1, Date date2) {
    long l = date2.getTime() - date1.getTime();
    long hour = l / 3600000L;
    long min = l / 60000L - hour * 60L;
    return hour + "时" + min + "分";
}

public static int differentDaysByMillisecond(Date date1, Date date2) {
    int days = (int)((date2.getTime() - date1.getTime()) / 86400000L);
    return days;
}

public static String convertBookTimeInAdvance2yyyyMMddHHmmss(Integer bookTimeInAdvance) {
    LocalDateTime startOfToday = LocalDate.now().atStartOfDay();
    LocalDateTime localDateTime = startOfToday.minusMinutes(bookTimeInAdvance.longValue());
    return localDateTime.format(DATE_TIME_FORMATTER_1);
}

public static String convertDate2yyyyMMdd(Date date) {
    return convertDate2LocalDateTime(date).format(DATE_TIME_FORMATTER_2);
}

public static String convertDate2yyyyMMddssss(Date date) {
    return convertDate2LocalDateTime(date).format(DATE_TIME_FORMATTER_7);
}

public static String convertDate2Str(Date date, DateTimeFormatter formatter) {
    return convertDate2LocalDateTime(date).format(formatter);
}

public static LocalDateTime convertDate2LocalDateTime(Date date) {
    return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
}

public static Date convertLocalDateTime2Date(LocalDateTime date) {
    return Date.from(date.atZone(ZoneId.systemDefault()).toInstant());
}

public static String convertDate2yyyyMMddWithMinus(LocalDate date) {
    if (null == date) {
        date = LocalDate.now();
    }

    return date.format(DATE_TIME_FORMATTER_3);
}

public static Date convertYyyyMMdd2Date(String yyyyMMddString) {
    LocalDate parse = LocalDate.parse(yyyyMMddString, DATE_TIME_FORMATTER_2);
    return Date.from(parse.atStartOfDay(ZoneId.systemDefault()).toInstant());
}

public static Date convertYyyyMMddWithMinus2Date(String yyyyMMddString) {
    LocalDate parse = LocalDate.parse(yyyyMMddString, DATE_TIME_FORMATTER_3);
    return Date.from(parse.atStartOfDay(ZoneId.systemDefault()).toInstant());
}

public static LocalDateTime getNowDateStringSplit(Integer split) {
    LocalDateTime now = LocalDateTime.now();
    return getDateStringSplitByLocalDate(now, split);
}

public static LocalDateTime getDateStringSplitByDate(Date date, Integer split) {
    LocalDateTime localDateTime = convertDate2LocalDateTime(date);
    return getDateStringSplitByLocalDate(localDateTime, split);
}

public static LocalDateTime getDateStringSplitByLocalDate(LocalDateTime date, Integer split) {
    int nowSecond = date.getSecond();
    int quotient = nowSecond / split;
    int remainder = nowSecond % split;
    int second;
    if (remainder != 0) {
        second = (quotient + 1) * split;
    } else {
        second = quotient * split;
    }

    return second == SECOND_OF_MINUTE ? date.withSecond(0).plusMinutes(1L) : date.withSecond(second);
}

public static String convertDate2yyyyMMddHHmmssWithoutBlank(LocalDateTime localDateTime) {
    return localDateTime.format(DATE_TIME_FORMATTER_4);
}

public static String convertDate2yyyyMMddHHmmss(LocalDateTime localDateTime) {
    return localDateTime.format(DATE_TIME_FORMATTER_8);
}

public static String convertDate2yyyyMMddHHmmssWithChinese(LocalDateTime localDateTime) {
    return localDateTime.format(DATE_TIME_FORMATTER_5);
}

public static LocalDateTime convertYyyyMMddHHmmssWithChinese2Date(String localDateTime) {
    return LocalDateTime.parse(localDateTime, DATE_TIME_FORMATTER_5);
}

public static String convertDate2yyyyMMddWithChinese(LocalDateTime localDateTime) {
    return localDateTime.format(DATE_TIME_FORMATTER_9);
}

public static Long convertLocalDateTime2Timestamp(LocalDateTime localDateTime) {
    return localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
}

public static LocalDateTime convertTimestamp2LocalDateTime(Long timestamp) {
    return LocalDateTime.ofEpochSecond(timestamp / 1000L, 0, ZoneOffset.ofHours(8));
}

public static String getStartTimeString(Long diff) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(new Date());
    calendar.set(11, 24);
    calendar.set(12, 0);
    calendar.set(13, 0);
    Date endTime = calendar.getTime();
    Long startTime = endTime.getTime() - diff * 1000L;
    calendar.setTimeInMillis(startTime);
    return calendar.get(11) + ":" + calendar.get(12);
}

public static Long getDiffTimes(String time) {
    if (!StringUtils.isNotBlank(time)) {
        return 0L;
    } else {
        Preconditions.checkArgument(time.contains(":"), "时间格式不正确");
        String[] times = time.split(":");
        Preconditions.checkArgument(times.length == 2, "时间格式不正确");
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.set(11, Integer.valueOf(times[0]));
        calendar.set(12, Integer.valueOf(times[1]));
        calendar.set(13, 0);
        Date startTime = calendar.getTime();
        calendar.set(11, 24);
        calendar.set(12, 0);
        calendar.set(13, 0);
        Date endTime = calendar.getTime();
        Long diff = endTime.getTime() - startTime.getTime();
        if (diff > 0L) {
            diff = diff / 1000L;
        }

        return diff;
    }
}

public static String convertDate10FromLong(Long timestamp) {
    return convertDate2LocalDateTime(new Date(timestamp)).format(DATE_TIME_FORMATTER_10);
}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值