1、创建

根据年、月、日、时、分、秒、纳秒等创建LocalDateTime
eg:
LocalTime zero = LocalTime.of(0, 0, 0); // 00:00:00
LocalTime mid = LocalTime.parse("12:00:00"); // 12:00:00
LocalTime now = LocalTime.now(); // 23:11:08.006
all method
LocalDateTime of(int year, Month month, int dayOfMonth, int hour, int minute)
LocalDateTime of(int year, Month month, int dayOfMonth, int hour, int minute, int second)
LocalDateTime of(int year, Month month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond)
LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute)
LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second)
LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond)
LocalDateTime of(LocalDate date, LocalTime time)

2、LocalDatetime 的所有方法:

eg:
// 取当前日期:
LocalDate today = LocalDate.now(); // -> 2014-12-24
// 根据年月日取日期:
LocalDate crischristmas = LocalDate.of(2014, 12, 25); // -> 2014-12-25
// 根据字符串取:
LocalDate endOfFeb = LocalDate.parse("2014-02-28"); // 严格按照ISO yyyy-MM-dd验证,02写成2都不行,当然也有一个重载方法允许自己定义格式
LocalDate.parse("2014-02-29"); // 无效日期无法通过:DateTimeParseException: Invalid date
// 取本月第1天:
LocalDate firstDayOfThisMonth = today.with(TemporalAdjusters.firstDayOfMonth()); // 2017-03-01
// 取本月第2天:
LocalDate secondDayOfThisMonth = today.withDayOfMonth(2); // 2017-03-02
// 取本月最后一天,再也不用计算是28,29,30还是31:
LocalDate lastDayOfThisMonth = today.with(TemporalAdjusters.lastDayOfMonth()); // 2017-12-31
// 取下一天:
LocalDate firstDayOf2015 = lastDayOfThisMonth.plusDays(1); // 变成了2018-01-01
// 取2017年1月第一个周一,用Calendar要死掉很多脑细胞:
LocalDate firstMondayOf2015 = LocalDate.parse("2017-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)); // 2017-01-02
all method:
1.	adjustInto	调整指定的Temporal和当前LocalDateTime对
2.	atOffset	结合LocalDateTime和ZoneOffset创建一个
3.	atZone	结合LocalDateTime和指定时区创建一个ZonedD
4.	compareTo	比较两个LocalDateTime
5.	format	格式化LocalDateTime生成一个字符串
6.	from	转换TemporalAccessor为LocalDateTi
7.	get	得到LocalDateTime的指定字段的值
8.	getDayOfMonth	得到LocalDateTime是月的第几天
9.	getDayOfWeek	得到LocalDateTime是星期几
10.	getDayOfYear	得到LocalDateTime是年的第几天
11.	getHour	得到LocalDateTime的小时
12.	getLong	得到LocalDateTime指定字段的值
13.	getMinute	得到LocalDateTime的分钟
14.	getMonth	得到LocalDateTime的月份
15.	getMonthValue	得到LocalDateTime的月份,从1到12
16.	getNano	得到LocalDateTime的纳秒数
17.	getSecond	得到LocalDateTime的秒数
18.	getYear	得到LocalDateTime的年份
19.	isAfter	判断LocalDateTime是否在指定LocalDateT
20.	isBefore	判断LocalDateTime是否在指定LocalDateT
21.	isEqual	判断两个LocalDateTime是否相等
22.	isSupported	判断LocalDateTime是否支持指定时间字段或单元
23.	minus	返回LocalDateTime减去指定数量的时间得到的值
24.	minusDays	返回LocalDateTime减去指定天数得到的值
25.	minusHours	返回LocalDateTime减去指定小时数得到的值
26.	minusMinutes	返回LocalDateTime减去指定分钟数得到的值
27.	minusMonths	返回LocalDateTime减去指定月数得到的值
28.	minusNanos	返回LocalDateTime减去指定纳秒数得到的值
29.	minusSeconds	返回LocalDateTime减去指定秒数得到的值
30.	minusWeeks	返回LocalDateTime减去指定星期数得到的值
31.	minusYears	返回LocalDateTime减去指定年数得到的值
32.	now	返回指定时钟的当前LocalDateTime
33.	of	根据年、月、日、时、分、秒、纳秒等创建LocalDateTi
34.	ofEpochSecond	根据秒数(从1970-01-0100:00:00开始)创建L
35.	ofInstant	根据Instant和ZoneId创建LocalDateTim
36.	parse	解析字符串得到LocalDateTime
37.	plus	返回LocalDateTime加上指定数量的时间得到的值
38.	plusDays	返回LocalDateTime加上指定天数得到的值
39.	plusHours	返回LocalDateTime加上指定小时数得到的值
40.	plusMinutes	返回LocalDateTime加上指定分钟数得到的值
41.	plusMonths	返回LocalDateTime加上指定月数得到的值
42.	plusNanos	返回LocalDateTime加上指定纳秒数得到的值
43.	plusSeconds	返回LocalDateTime加上指定秒数得到的值
44.	plusWeeks	返回LocalDateTime加上指定星期数得到的值
45.	plusYears	返回LocalDateTime加上指定年数得到的值
46.	query	查询LocalDateTime
47.	range	返回指定时间字段的范围
48.	toLocalDate	返回LocalDateTime的LocalDate部分
49.	toLocalTime	返回LocalDateTime的LocalTime部分
50.	toString	返回LocalDateTime的字符串表示
51.	truncatedTo	返回LocalDateTime截取到指定时间单位的拷贝
52.	until	计算LocalDateTime和另一个LocalDateTi
53.	with	返回LocalDateTime指定字段更改为新值后的拷贝
54.	withDayOfMonth	返回LocalDateTime月的第几天更改为新值后的拷贝
55.	withDayOfYear	返回LocalDateTime年的第几天更改为新值后的拷贝
56.	withHour	返回LocalDateTime的小时数更改为新值后的拷贝
57.	withMinute	返回LocalDateTime的分钟数更改为新值后的拷贝
58.	withMonth	返回LocalDateTime的月份更改为新值后的拷贝
59.	withNano	返回LocalDateTime的纳秒数更改为新值后的拷贝
60.	withSecond	返回LocalDateTime的秒数更改为新值后的拷贝
61.	withYear	返回LocalDateTime年份更改为新值后的拷贝

3、对应的SQL的类型

SQL -> Java

date -> LocalDate time -> LocalTime timestamp -> LocalDateTime

4、根据上面的方法自定义的Util类

public class DateTimeUtils {

public static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HHmmss"); public static final DateTimeFormatter MONTH_FORMATTER = DateTimeFormatter.ofPattern("yyyyMM"); public static final DateTimeFormatter SHORT_DATE_FORMATTER = DateTimeFormatter.ofPattern("yyMMdd"); public static final DateTimeFormatter SHORT_DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyMMddHHmmss"); public static final DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");

<span class="hljs-comment">/**
 * 返回当前的日期
 * <span class="hljs-doctag">@return</span>
 */</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> LocalDate <span class="hljs-title">getCurrentLocalDate</span><span class="hljs-params">()</span> </span>{
    <span class="hljs-keyword">return</span> LocalDate.now();
}

<span class="hljs-comment">/**
 * 返回当前时间
 * <span class="hljs-doctag">@return</span>
 */</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> LocalTime <span class="hljs-title">getCurrentLocalTime</span><span class="hljs-params">()</span> </span>{
    <span class="hljs-keyword">return</span> LocalTime.now();
}

<span class="hljs-comment">/**
 * 返回当前日期时间
 * <span class="hljs-doctag">@return</span>
 */</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> LocalDateTime <span class="hljs-title">getCurrentLocalDateTime</span><span class="hljs-params">()</span> </span>{
    <span class="hljs-keyword">return</span> LocalDateTime.now();
}

<span class="hljs-comment">/**
 * yyyyMMdd
 * 
 * <span class="hljs-doctag">@return</span>
 */</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">getCurrentDateStr</span><span class="hljs-params">()</span> </span>{
    <span class="hljs-keyword">return</span> LocalDate.now().format(DATE_FORMATTER);
}

<span class="hljs-comment">/**
 * yyMMdd
 * 
 * <span class="hljs-doctag">@return</span>
 */</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">getCurrentShortDateStr</span><span class="hljs-params">()</span> </span>{
    <span class="hljs-keyword">return</span> LocalDate.now().format(SHORT_DATE_FORMATTER);
}

<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">getCurrentMonthStr</span><span class="hljs-params">()</span> </span>{
    <span class="hljs-keyword">return</span> LocalDate.now().format(MONTH_FORMATTER);
}

<span class="hljs-comment">/**
 * yyyyMMddHHmmss
 * <span class="hljs-doctag">@return</span>
 */</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">getCurrentDateTimeStr</span><span class="hljs-params">()</span> </span>{
    <span class="hljs-keyword">return</span> LocalDateTime.now().format(DATETIME_FORMATTER);
}

<span class="hljs-comment">/**
 * yyMMddHHmmss
 * <span class="hljs-doctag">@return</span>
 */</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">getCurrentShortDateTimeStr</span><span class="hljs-params">()</span> </span>{
    <span class="hljs-keyword">return</span> LocalDateTime.now().format(SHORT_DATETIME_FORMATTER);
}

<span class="hljs-comment">/**
 * HHmmss
 * <span class="hljs-doctag">@return</span>
 */</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">getCurrentTimeStr</span><span class="hljs-params">()</span> </span>{
    <span class="hljs-keyword">return</span> LocalTime.now().format(TIME_FORMATTER);
}

<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">getCurrentDateStr</span><span class="hljs-params">(String pattern)</span> </span>{
    <span class="hljs-keyword">return</span> LocalDate.now().format(DateTimeFormatter.ofPattern(pattern));
}

<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">getCurrentDateTimeStr</span><span class="hljs-params">(String pattern)</span> </span>{
    <span class="hljs-keyword">return</span> LocalDateTime.now().format(DateTimeFormatter.ofPattern(pattern));
}

<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">getCurrentTimeStr</span><span class="hljs-params">(String pattern)</span> </span>{
    <span class="hljs-keyword">return</span> LocalTime.now().format(DateTimeFormatter.ofPattern(pattern));
}

<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> LocalDate <span class="hljs-title">parseLocalDate</span><span class="hljs-params">(String dateStr, String pattern)</span> </span>{
    <span class="hljs-keyword">return</span> LocalDate.parse(dateStr, DateTimeFormatter.ofPattern(pattern));
}

<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> LocalDateTime <span class="hljs-title">parseLocalDateTime</span><span class="hljs-params">(String dateTimeStr, String pattern)</span> </span>{
    <span class="hljs-keyword">return</span> LocalDateTime.parse(dateTimeStr, DateTimeFormatter.ofPattern(pattern));
}

<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> LocalTime <span class="hljs-title">parseLocalTime</span><span class="hljs-params">(String timeStr, String pattern)</span> </span>{
    <span class="hljs-keyword">return</span> LocalTime.parse(timeStr, DateTimeFormatter.ofPattern(pattern));
}

<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">formatLocalDate</span><span class="hljs-params">(LocalDate date, String pattern)</span> </span>{
    <span class="hljs-keyword">return</span> date.format(DateTimeFormatter.ofPattern(pattern));
}

<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">formatLocalDateTime</span><span class="hljs-params">(LocalDateTime datetime, String pattern)</span> </span>{
    <span class="hljs-keyword">return</span> datetime.format(DateTimeFormatter.ofPattern(pattern));
}

<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">formatLocalTime</span><span class="hljs-params">(LocalTime time, String pattern)</span> </span>{
    <span class="hljs-keyword">return</span> time.format(DateTimeFormatter.ofPattern(pattern));
}

<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> LocalDate <span class="hljs-title">parseLocalDate</span><span class="hljs-params">(String dateStr)</span> </span>{
    <span class="hljs-keyword">return</span> LocalDate.parse(dateStr, DATE_FORMATTER);
}

<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> LocalDateTime <span class="hljs-title">parseLocalDateTime</span><span class="hljs-params">(String dateTimeStr)</span> </span>{
    <span class="hljs-keyword">return</span> LocalDateTime.parse(dateTimeStr, DATETIME_FORMATTER);
}

<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> LocalTime <span class="hljs-title">parseLocalTime</span><span class="hljs-params">(String timeStr)</span> </span>{
    <span class="hljs-keyword">return</span> LocalTime.parse(timeStr, TIME_FORMATTER);
}

<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">formatLocalDate</span><span class="hljs-params">(LocalDate date)</span> </span>{
    <span class="hljs-keyword">return</span> date.format(DATE_FORMATTER);
}

<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">formatLocalDateTime</span><span class="hljs-params">(LocalDateTime datetime)</span> </span>{
    <span class="hljs-keyword">return</span> datetime.format(DATETIME_FORMATTER);
}

<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">formatLocalTime</span><span class="hljs-params">(LocalTime time)</span> </span>{
    <span class="hljs-keyword">return</span> time.format(TIME_FORMATTER);
}

<span class="hljs-comment">/**
 * 日期相隔天数
 * <span class="hljs-doctag">@param</span> startDateInclusive
 * <span class="hljs-doctag">@param</span> endDateExclusive
 * <span class="hljs-doctag">@return</span>
 */</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">int</span> <span class="hljs-title">periodDays</span><span class="hljs-params">(LocalDate startDateInclusive, LocalDate endDateExclusive)</span> </span>{
    <span class="hljs-keyword">return</span> Period.between(startDateInclusive, endDateExclusive).getDays();
}

<span class="hljs-comment">/**
 * 日期相隔小时
 * <span class="hljs-doctag">@param</span> startInclusive
 * <span class="hljs-doctag">@param</span> endExclusive
 * <span class="hljs-doctag">@return</span>
 */</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">long</span> <span class="hljs-title">durationHours</span><span class="hljs-params">(Temporal startInclusive, Temporal endExclusive)</span> </span>{
    <span class="hljs-keyword">return</span> Duration.between(startInclusive, endExclusive).toHours();
}

<span class="hljs-comment">/**
 * 日期相隔分钟
 * <span class="hljs-doctag">@param</span> startInclusive
 * <span class="hljs-doctag">@param</span> endExclusive
 * <span class="hljs-doctag">@return</span>
 */</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">long</span> <span class="hljs-title">durationMinutes</span><span class="hljs-params">(Temporal startInclusive, Temporal endExclusive)</span> </span>{
    <span class="hljs-keyword">return</span> Duration.between(startInclusive, endExclusive).toMinutes();
}

<span class="hljs-comment">/**
 * 日期相隔毫秒数
 * <span class="hljs-doctag">@param</span> startInclusive
 * <span class="hljs-doctag">@param</span> endExclusive
 * <span class="hljs-doctag">@return</span>
 */</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">long</span> <span class="hljs-title">durationMillis</span><span class="hljs-params">(Temporal startInclusive, Temporal endExclusive)</span> </span>{
    <span class="hljs-keyword">return</span> Duration.between(startInclusive, endExclusive).toMillis();
}

<span class="hljs-comment">/**
 * 是否当天
 * <span class="hljs-doctag">@param</span> date
 * <span class="hljs-doctag">@return</span>
 */</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">boolean</span> <span class="hljs-title">isToday</span><span class="hljs-params">(LocalDate date)</span> </span>{
    <span class="hljs-keyword">return</span> getCurrentLocalDate().equals(date);
}

<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> Long <span class="hljs-title">toEpochMilli</span><span class="hljs-params">(LocalDateTime dateTime)</span> </span>{
    <span class="hljs-keyword">return</span> dateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
}

}