java 基于JDK8时间包的时间工具类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 基于JDK8时间包的时间工具类相关的知识,希望对你有一定的参考价值。
package com.duoku.agentgame.commons.utils;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;
/**
* 基于 JDK 8 time包的时间工具类
* <p/>
* Created by fanchangqi on 2018/1/3 17:41.
*/
public final class TimeUtil {
/**
* 获取默认时间格式: yyyy-MM-dd HH:mm:ss
*/
private static final DateTimeFormatter DEFAULT_DATETIME_FORMATTER = TimeFormat.LONG_DATE_PATTERN_LINE.formatter;
private TimeUtil() {
// no construct function
}
/**
* String 转时间
*
* @param timeStr
* @return
*/
public static LocalDateTime parseTime(String timeStr) {
return LocalDateTime.parse(timeStr, DEFAULT_DATETIME_FORMATTER);
}
/**
* String 转时间
*
* @param timeStr
* @param format 时间格式
* @return
*/
public static LocalDateTime parseTime(String timeStr, TimeFormat format) {
return LocalDateTime.parse(timeStr, format.formatter);
}
/**
* 时间转 String
*
* @param time
* @return
*/
public static String parseTime(LocalDateTime time) {
return DEFAULT_DATETIME_FORMATTER.format(time);
}
/**
* 时间转 String
*
* @param time
* @param format 时间格式
* @return
*/
public static String parseTime(LocalDateTime time, TimeFormat format) {
return format.formatter.format(time);
}
/**
* 获取当前时间
*
* @return 返回时间类型 yyyy-MM-dd HH:mm:ss
*/
public static String getCurrentDatetime() {
return DEFAULT_DATETIME_FORMATTER.format(LocalDateTime.now());
}
/**
* 获取当前时间
*
* @param format 时间格式
* @return 返回指定格式
*/
public static String getCurrentDatetime(TimeFormat format) {
return format.formatter.format(LocalDateTime.now());
}
/**
* 获取当前时间戳
*
* @return
*/
public static Date getCurrentTimestamp() {
Instant timestamp = Instant.now();
return Date.from(timestamp);
}
/**
* 获取指定日期下个月的第一天的00:00:00
*
* @return
*/
public static LocalDateTime getFirstDayOfNextMonth(LocalDateTime localDateTime) {
return localDateTime.with(TemporalAdjusters.firstDayOfNextMonth()).with(LocalTime.MIN);
}
/**
* 添加年
*
* @param localDateTime
* @param years
* @return 返回Date类型 yyyy-MM-dd HH:mm:ss
*/
public static LocalDateTime plusYears(final LocalDateTime localDateTime, final int years) {
return localDateTime.plusYears(years);
}
/**
* Date和LocalDateTime的相互转换
*
* @param localDateTime
* @return
*/
public static Date transform(final LocalDateTime localDateTime) {
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zdt = localDateTime.atZone(zoneId);
Date date = Date.from(zdt.toInstant());
return date;
}
/**
* Date和LocalDateTime的相互转换
*
* @param date
* @return
*/
public static LocalDateTime transform(final Date date) {
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
return localDateTime;
}
/**
* 时间格式
*/
public enum TimeFormat {
/**
* 短时间格式
*/
SHORT_DATE_PATTERN_LINE("yyyy-MM-dd"),
SHORT_DATE_PATTERN_SLASH("yyyy/MM/dd"),
SHORT_DATE_PATTERN_DOUBLE_SLASH("yyyy\\MM\\dd"),
SHORT_DATE_PATTERN_NONE("yyyyMMdd"),
/**
* 长时间格式
*/
LONG_DATE_PATTERN_LINE("yyyy-MM-dd HH:mm:ss"),
LONG_DATE_PATTERN_SLASH("yyyy/MM/dd HH:mm:ss"),
LONG_DATE_PATTERN_DOUBLE_SLASH("yyyy\\MM\\dd HH:mm:ss"),
LONG_DATE_PATTERN_NONE("yyyyMMdd HH:mm:ss"),
LONG_DATE_PATTERN_PURENUM("yyyyMMddHHmmss"),
/**
* 长时间格式 带毫秒
*/
LONG_DATE_PATTERN_WITH_MILSEC_LINE("yyyy-MM-dd HH:mm:ss.SSS"),
LONG_DATE_PATTERN_WITH_MILSEC_SLASH("yyyy/MM/dd HH:mm:ss.SSS"),
LONG_DATE_PATTERN_WITH_MILSEC_DOUBLE_SLASH("yyyy\\MM\\dd HH:mm:ss.SSS"),
LONG_DATE_PATTERN_WITH_MILSEC_NONE("yyyyMMdd HH:mm:ss.SSS");
private transient DateTimeFormatter formatter;
TimeFormat(String pattern) {
formatter = DateTimeFormatter.ofPattern(pattern);
}
}
}
以上是关于java 基于JDK8时间包的时间工具类的主要内容,如果未能解决你的问题,请参考以下文章
Java日期时间API系列11-----Jdk8中java.time包中的新的日期时间API类,使用java8日期时间API重写农历LunarDate
Java日期时间API系列32-----Jdk8中java.time包中的新的日期时间API类应用,时间工具包 xk-time 1.0.0 版本完成。
Java日期时间API系列13-----Jdk8中java.time包中的新的日期时间API类,时间类转换,Date转LocalDateTime,LocalDateTime转Date