Java8 时间使用
获取当前日期
LocalDate nowLocalDate = LocalDate. now ( ) ;
DateTimeFormatter formatter = DateTimeFormatter. ofPattern ( "yyyy-MM-dd" ) ;
String nowString = nowLocalDate. format ( formatter) ;
获取当前时间
LocalTime localTime = LocalTime. now ( ) ;
DateTimeFormatter formatter = DateTimeFormatter. ofPattern ( "HH:mm:ss" ) ;
String stringTime = localTime. format ( formatter)
获取当前日期加时间
LocalDateTime localDateTime = LocalDateTime. now ( ) ;
DateTimeFormatter formatter = DateTimeFormatter. ofPattern ( "yyyy-MM-dd HH:mm:ss" ) ;
String dateTime = LocalDateTime. now ( ) . format ( formatter) ;
String dateTime = LocalDateTime. now ( ) . format ( DateTimeFormatter. ISO_LOCAL_DATE_TIME) ;
自定义时间(LocalDate)
LocalTime localTime = LocalTime. parse ( "10:09:20" ) ;
LocalDate localDate = LocalDate. parse ( "2019-06-19" ) ;
LocalDateTime localDateTime = LocalDateTime. parse ( "2019-06-19T10:09:30" ) ;
计算两个日期的时间差
long days = LocalDate. now ( ) . toEpochDay ( ) ;
long day = LocalDate. now ( ) . toEpochDay ( ) - LocalDate. parse ( "2017-12-01" ) . toEpochDay ( ) ;
判断日期的先后,isAfter/isBefore
LocalDate date1 = LocalDate. parse ( "2019-06-19" ) ;
LocalDate date2 = LocalDate. parse ( "2019-06-20" ) ;
if ( date1. isBefore ( date2) ) {
System. out. println ( "date1在date2之前" ) ;
}
if ( date2. isAfter ( date1) ) {
System. out. println ( "date2在date1之前" ) ;
}
Date和LocalDateTime转换
public static LocalDateTime date2LocalDate ( Date date) {
return date. toInstant ( ) . atZone ( ZoneId. systemDefault ( ) ) . toLocalDateTime ( ) ;
}
public static LocalDateTime dateToLocalDate ( Date date) {
return LocalDateTime. ofInstant ( Instant. ofEpochMilli ( date. getTime ( ) ) , ZoneId. systemDefault ( ) ) ;
}
public static Date localDate2Date ( LocalDateTime localDateTime) {
return Date. from ( localDateTime. atZone ( ZoneId. systemDefault ( ) ) . toInstant ( ) ) ;
}
public static Date localDateToDate ( LocalDateTime localDateTime) {
return new Date ( localDateTime. toInstant ( ZoneOffset. of ( "+8" ) ) . toEpochMilli ( ) ) ;
}
LocalDateTime与时间戳的使用
Long second = LocalDateTime. now ( ) . toEpochSecond ( ZoneOffset. of ( "+8" ) ) ;
Long milliSecond = LocalDateTime. now ( ) . toInstant ( ZoneOffset. of ( "+8" ) ) . toEpochMilli ( ) ;
public LocalDateTime timestamToLocalDateTime ( long timestamp) {
return LocalDateTime. ofInstant ( Instant. ofEpochMilli ( timestamp) , ZoneId. systemDefault ( ) ) ;
}
public long localDateTimeToTimestamp ( LocalDateTime localDateTime) {
return localDateTime. toInstant ( ZoneOffset. of ( "+8" ) ) . toEpochMilli ( ) ;
}
其它API
LocalDateTime localDateTime = LocalDateTime. now ( ) ;
int dayOfMonth = localDateTime. getDayOfMonth ( ) ;
int dayOfYear = localDateTime. getDayOfYear ( ) ;
DayOfWeek dayOfWeek = localDateTime. getDayOfWeek ( ) ;
int dayofWeek = dayOfWeek. getValue ( ) ;
LocalDateTime beforeDateTime = LocalDateTime. now ( ) . minusDays ( 1 ) ;
LocalDateTime nextDateTime = LocalDateTime. now ( ) . plusDays ( 1 ) ;
LocalDateTime beforeHourTime = LocalDateTime. now ( ) . minusHours ( 2 ) ;
LocalDateTime afterMinuteTime = LocalDateTime. now ( ) . plusMinutes ( 20 ) ;
boolean isLeapYear = LocalDate. now ( ) . isLeapYear ( ) ;