对Date进行封装,覆盖绝大部分场景、搬到项目中就可以直接使用。
public class DateUtil {
public static final String yyyy__MM__dd = "yyyy/MM/dd" ;
public static final String yyyy_MM_dd = "yyyy-MM-dd" ;
public static final String HH_mm_ss = "HH:mm:ss" ;
public static final String yyyy_MM_dd_HH_mm_ss = "yyyy-MM-dd HH:mm:ss" ;
public static final String yyyyMMddHHmmss = "yyyyMMddHHmmss" ;
public static final String yyyyMMddHHmmssfff = "yyyyMMddHHmmssSSS" ;
public static final String yyyy_MM_dd_HH_mm_ss_fff = "yyyy-MM-dd HH:mm:ss.SSS" ;
public static final String yyyy_MM_dd_HH_mm_ss_fffffff = "yyyy-MM-dd HH:mm:ss.SSSSSSS" ;
private static long nd = 1000 * 24 * 60 * 60 ;
private static long nh = 1000 * 60 * 60 ;
private static long nm = 1000 * 60 ;
public static final Date DEFAULT_DATE = parseDate ( "1970-01-01" ) ;
private final static TimeZone timeZone = TimeZone . getTimeZone ( "GMT+08:00" ) ;
public static String formatDate ( @NotNull Date date, @NotNull String pattern) {
try {
return getDateFormat ( pattern) . format ( date) ;
} catch ( Exception ex) {
return null ;
}
}
public static String formatDate ( @NotNull Date date) {
return formatDate ( date, yyyy_MM_dd) ;
}
public static Date parseDate ( @NotNull String dateStr, @NotNull String pattern) {
try {
return getDateFormat ( pattern) . parse ( dateStr) ;
} catch ( ParseException ex) {
return null ;
}
}
public static Date parseDate ( @NotNull String dateStr) {
return parseDate ( dateStr, yyyy_MM_dd) ;
}
public static boolean isAdult ( Date birthday) {
Calendar calendar = Calendar . getInstance ( timeZone) ;
calendar. add ( Calendar . YEAR, - 18 ) ;
return calendar. getTime ( ) . after ( birthday) ;
}
private static DateFormat getDateFormat ( String pattern) {
return new SimpleDateFormat ( pattern) ;
}
public static Date dateCalculation ( Date date, int calendarType, int no) {
Calendar calendar = Calendar . getInstance ( ) ;
calendar. setTime ( date == null ? new Date ( ) : date) ;
calendar. add ( calendarType, no) ;
return calendar. getTime ( ) ;
}
public static int differentDaysByMillisecond ( Date date1, Date date2) {
return ( int ) ( ( date2. getTime ( ) - date1. getTime ( ) ) / ( 1000 * 3600 * 24 ) ) ;
}
public static int getHours ( Date date) {
Calendar calendar = Calendar . getInstance ( ) ;
calendar. setTime ( date) ;
return calendar. get ( Calendar . HOUR_OF_DAY) ;
}
public static int getMinutes ( Date date) {
Calendar calendar = Calendar . getInstance ( ) ;
calendar. setTime ( date) ;
return calendar. get ( Calendar . MINUTE) ;
}
public static Date addDay ( Date date, int i) {
try {
Calendar calendar = Calendar . getInstance ( ) ;
calendar. setTime ( date) ;
calendar. add ( GregorianCalendar . DATE, i) ;
return calendar. getTime ( ) ;
} catch ( Exception e) {
return null ;
}
}
public static Date addMinute ( Date date, int i) {
Calendar calendar = Calendar . getInstance ( ) ;
calendar. setTime ( date) ;
calendar. add ( GregorianCalendar . MINUTE, i) ;
return calendar. getTime ( ) ;
}
public static Date getDatePart ( Date date) {
return DateUtil . parseDate ( DateUtil . formatDate ( date, DateUtil . yyyy_MM_dd) , DateUtil . yyyy_MM_dd) ;
}
public static String getTimePart ( Date date) {
return DateUtil . formatDate ( date, DateUtil. HH_mm_ss ) ;
}
public static String convertTimePart ( String str) {
if ( StringUtils . isEmpty ( str) ) return "" ;
String [ ] array = str. split ( ":" ) ;
if ( array. length == 1 ) {
return ( array[ 0 ] . length ( ) == 1 ? "0" + array[ 0 ] : array[ 0 ] ) + ":00:00" ;
}
if ( array. length == 2 ) {
return ( array[ 0 ] . length ( ) == 1 ? "0" + array[ 0 ] : array[ 0 ] ) + ":" +
( array[ 1 ] . length ( ) == 1 ? "0" + array[ 1 ] : array[ 1 ] ) + ":00" ;
}
if ( array. length == 3 ) {
return DateUtil . formatDate ( DateUtil . parseDate ( str, DateUtil. HH_mm_ss ) , DateUtil. HH_mm_ss ) ;
}
return str;
}
public static Date getArrivalTime ( Date startDate, boolean earliest) {
int timeOffset = earliest ? 14 : 21 ;
Calendar today = Calendar . getInstance ( timeZone) ;
Calendar start = Calendar . getInstance ( timeZone) ;
start. setTime ( startDate) ;
start. set ( Calendar . HOUR_OF_DAY, 0 ) ;
start. set ( Calendar . MINUTE, 0 ) ;
start. set ( Calendar . SECOND, 0 ) ;
if ( start. after ( today) ) {
start. set ( Calendar . HOUR_OF_DAY, timeOffset) ;
} else {
if ( today. get ( Calendar . HOUR_OF_DAY) >= timeOffset) {
start. set ( Calendar . HOUR_OF_DAY, today. get ( Calendar . HOUR_OF_DAY) ) ;
start. set ( Calendar . MINUTE, 30 ) ;
} else {
start. set ( Calendar . HOUR_OF_DAY, timeOffset) ;
}
}
return start. getTime ( ) ;
}
public static boolean isDateThanNowDateOverDiff ( long date, Integer diff) {
long nm = 1000 * 60 ;
int minNumber = ( int ) ( ( System . currentTimeMillis ( ) - date) / nm) ;
return minNumber >= diff;
}
public static int dateCompare ( String date1, String date2) {
Date date_1 = parseDate ( date1, yyyy_MM_dd_HH_mm_ss) ;
Date date_2 = parseDate ( date2, yyyy_MM_dd_HH_mm_ss) ;
if ( date_1. after ( date_2) ) {
return 1 ;
}
if ( date_1. before ( date_2) ) {
return - 1 ;
}
return 0 ;
}
public static LocalDateTime stringToDateTime ( String datetime, String format) {
if ( StringUtils . isEmpty ( format) ) {
format = "yyyy-MM-dd HH:mm:ss" ;
}
DateTimeFormatter formatter = DateTimeFormatter . ofPattern ( format) ;
return LocalDateTime . parse ( datetime, formatter) ;
}
public static LocalDateTime parseStringToDateTime ( String times) {
DateTimeFormatter df = DateTimeFormatter . ofPattern ( "yyyy-MM-dd HH:mm:ss" ) ;
LocalDateTime ldt = LocalDateTime . parse ( times, df) ;
return ldt;
}
public static int getHourOfDay ( ) {
Calendar cal = Calendar . getInstance ( ) ;
cal. setTime ( new Date ( ) ) ;
int hour = cal. get ( Calendar . HOUR_OF_DAY) ;
return hour;
}
public static int getDiffMinutes ( Date endDate, Date startDate) {
return ( int ) ( ( endDate. getTime ( ) - startDate. getTime ( ) ) / ( 1000 * 60 ) ) ;
}
public static int getDiffSeconds ( Date endDate, Date startDate) {
return ( int ) ( ( endDate. getTime ( ) - startDate. getTime ( ) ) / 1000 ) ;
}
}