import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Date;
/**
* title: 时间处理工具类 基于jdk1.8
* Author: hetao
* Date: 2019/12/17 10:03
*/
public class LocalDateTimeUtil {
private static DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
private static DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
private static Pattern datePattern = Pattern.compile("^\\d{4}(\\-|\\/|.)\\d{1,2}\\1\\d{1,2}$");
private static Pattern dateTimePattern = Pattern.compile("^(\\d{4})([/-]\\d{1,2}){2}\\s\\d{1,2}(:\\d{1,2}){2}$");
/**
* Date转换为LocalDateTime
* @param date Date 类型
*/
public static LocalDateTime dateToLocalDateTime(Date date){
Instant instant = date.toInstant();//An instantaneous point on the time-line.(时间线上的一个瞬时点。)
ZoneId zoneId = ZoneId.systemDefault();//A time-zone ID, such as {@code Europe/Paris}.(时区)
LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
return localDateTime;
}
/**
* LocalDateTime转换为Date
* @param localDateTime LocalDateTime
*/
public static Date localDateTimeToDate(LocalDateTime localDateTime) {
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zdt = localDateTime.atZone(zoneId);//Combines this date-time with a time-zone to create a ZonedDateTime.
Date date = Date.from(zdt.toInstant());
return date;
}
/**
* String转换为Date
* @param dateStr String
*/
public static Date strToDate(String dateStr) {
LocalDateTime localDateTime = LocalDateTime.parse(dateStr,dateTimeFormatter);
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zdt = localDateTime.atZone(zoneId);//Combines this date-time with a time-zone to create a ZonedDateTime.
Date date = Date.from(zdt.toInstant());
return date;
}
/**
* 获取去年的今天
* @param yearMonthly
* @return
*/
public static String lastOneYear(String yearMonthly) {
LocalDate currMonthStart = LocalDate.parse(yearMonthly);
LocalDate localDate = currMonthStart.minusYears(1);
return localDate.format(dateFormatter);
}
/**
* 获取上一个月份的今天
* @param yearMonthly
* @return
*/
public static String lastOneMonth(String yearMonthly) {
LocalDate currMonthStart = LocalDate.parse(yearMonthly);
LocalDate localDate = currMonthStart.minusMonths(1);
return localDate.format(dateFormatter);
}
/**
* 检测字符串是否是日期格式
* @param dateStr
* @return
*/
public static boolean isDate(String dateStr) {
Matcher dateMatcher = datePattern.matcher(dateStr);
Matcher dateTimeMatcher = dateTimePattern.matcher(dateStr);
if (dateMatcher.matches() || dateTimeMatcher.matches()) {
return true;
} else {
return false;
}
}
时间处理工具类 基于jdk1.8
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- java容器类总结——基于JDK1.8 虚线为接口或抽象类,黑框为常用类,实箭头标识持有,空箭头标识继承或实现。 ...