jdk 8 시간 도구 클래스
package com.changfu.common.util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.sql.Timestamp;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.time.temporal.ChronoUnit;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
*
*/
public class DateUtil {
/**
* the milli second of a day
*/
public static final long DAYMILLI = 24 * 60 * 60 * 1000;
/**
* the milli seconds of an hour
*/
public static final long HOURMILLI = 60 * 60 * 1000;
/**
* the milli seconds of a minute
*/
public static final long MINUTEMILLI = 60 * 1000;
/**
* the milli seconds of a second
*/
public static final long SECONDMILLI = 1000;
/**
* added time
*/
public static final String TIMETO = " 23:59:59";
/**
* flag before
*/
public static final transient int BEFORE = 1;
/**
* flag after
*/
public static final transient int AFTER = 2;
/**
* flag equal
*/
public static final transient int EQUAL = 3;
/**
* date format dd/MMM/yyyy:HH:mm:ss +0900
*/
public static final String TIME_PATTERN_LONG = "dd/MMM/yyyy:HH:mm:ss +0900";
/**
* date format dd/MM/yyyy:HH:mm:ss +0900
*/
public static final String TIME_PATTERN_LONG2 = "dd/MM/yyyy:HH:mm:ss +0900";
/**
* date format YYYY-MM-DD HH24:MI:SS
*/
public static final String DB_TIME_PATTERN = "YYYY-MM-DD HH24:MI:SS";
/**
* date format YYYYMMDDHH24MISS
*/
public static final String DB_TIME_PATTERN_1 = "YYYYMMDDHH24MISS";
/**
* date format dd/MM/yy HH:mm:ss
*/
public static final String TIME_PATTERN_SHORT = "dd/MM/yy HH:mm:ss";
/**
* date format dd/MM/yy HH24:mm
*/
public static final String TIME_PATTERN_SHORT_1 = "yyyy/MM/dd HH:mm";
/**
* date format yyyy MM dd HH:mm:ss
*/
public static final String TIME_PATTERN_SHORT_2 = "yyyy MM dd HH:mm:ss";
/**
* date format yyyyMMddHHmmss
*/
public static final String TIME_PATTERN_SESSION = "yyyyMMddHHmmss";
/**
* date format yyyyMMddHHmmssSSS
*/
public static final String TIME_PATTERN_MILLISECOND = "yyyyMMddHHmmssSSS";
/**
* date format yyyyMMdd
*/
public static final String DATE_FMT_0 = "yyyyMMdd";
/**
* date format yyyy/MM/dd
*/
public static final String DATE_FMT_1 = "yyyy/MM/dd";
/**
* date format yyyy/MM/dd hh:mm:ss
*/
public static final String DATE_FMT_2 = "yyyy/MM/dd hh:mm:ss";
/**
* date format yyyy-MM-dd
*/
public static final String DATE_FMT_3 = "yyyy-MM-dd";
/**
* date format yyyy MM dd
*/
public static final String DATE_FMT_4 = "yyyy MM dd ";
/**
* date format yyyy-MM-dd HH
*/
public static final String DATE_FMT_5 = "yyyy-MM-dd HH";
/**
* date format yyyy-MM
*/
public static final String DATE_FMT_6 = "yyyy-MM";
/**
* date format MM dd HH:mm
*/
public static final String DATE_FMT_7 = "MM dd HH:mm";
/**
* date format MM dd HH:mm
*/
public static final String DATE_FMT_8 = "HH:mm:ss";
/**
* date format MM dd HH:mm
*/
public static final String DATE_FMT_9 = "yyyy.MM.dd";
public static final String DATE_FMT_10 = "HH:mm";
public static final String DATE_FMT_11 = "yyyy.MM.dd HH:mm:ss";
/**
* date format yyyy MM dd
*/
public static final String DATE_FMT_12 = "MM dd ";
public static final String DATE_FMT_13 = "yyyy MM dd HH mm ";
public static final String DATE_FMT_14 = "yyyyMM";
public static final String DATE_FMT_15 = "MM-dd HH:mm:ss";
public static final String DATE_FMT_16 = "yyyyMMddHHmm";
public static final String DATE_FMT_17 = "HHmmss";
public static final String DATE_FMT_18 = "yyyy";
/**
* date format yyyy-MM-dd HH:mm:ss
*/
public static final String TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
private static final Logger logger = LoggerFactory.getLogger(DateUtil.class);
/**
* localDateTime string
*
* @param localDateTime
* @param format :yyyy-MM-dd hh:mm:ss
* @return
*/
public static String formatLocalDateTimeToString(LocalDateTime localDateTime, String format) {
try {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
return localDateTime.format(formatter);
} catch (DateTimeParseException e) {
e.printStackTrace();
}
return null;
}
/**
* string LocalDateTime
*
* @param dateStr :"2017-08-11 01:00:00"
* @param format :"yyyy-MM-dd HH:mm:ss"
* @return
*/
public static LocalDateTime stringToLocalDateTime(String dateStr, String format) {
try {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
return LocalDateTime.parse(dateStr, formatter);
} catch (DateTimeParseException e) {
e.printStackTrace();
}
return null;
}
/**
*
*
* @param date
* @return
*/
public static int getActualMaximum(Date date) {
return dateToLocalDateTime(date).getMonth().length(dateToLocalDate(date).isLeapYear());
}
/**
*
*
* @param date
* @return 1: ;2: ;3: ;4: ;5: ;6: ;7: ;
*/
public static int getWeekOfDate(Date date) {
return dateToLocalDateTime(date).getDayOfWeek().getValue();
}
/**
* LocalDate , , >=0
*
* @param before
* @param after
* @return
*/
public static int getAbsDateDiffDay(LocalDate before, LocalDate after) {
return Math.abs(Period.between(before, after).getDays());
}
/**
* LocalDateTime , , >=0
*
* @param before
* @param after
* @return
*/
public static int getAbsTimeDiffDay(LocalDateTime before, LocalDateTime after) {
return Math.abs(Period.between(before.toLocalDate(), after.toLocalDate()).getDays());
}
/**
* LocalDateTime , , >=0
*
* @param before
* @param after
* @return
*/
public static int getAbsTimeDiffMonth(LocalDateTime before, LocalDateTime after) {
return Math.abs(Period.between(before.toLocalDate(), after.toLocalDate()).getMonths());
}
/**
* LocalDateTime , , >=0
*
* @param before
* @param after
* @return
*/
public static int getAbsTimeDiffYear(LocalDateTime before, LocalDateTime after) {
return Math.abs(Period.between(before.toLocalDate(), after.toLocalDate()).getYears());
}
/**
*
*
* @param date
* @return 1-7 1: ,2: ,3: ,4: ,5: ,6: ,7:
*/
public static int getDayOfWeek(Date date) {
Calendar cal = new GregorianCalendar();
cal.setTime(date);
return cal.get(Calendar.DAY_OF_WEEK);
}
/**
*
*
* @param date
* @return
*/
public static int getLastMonth(Date date) {
return dateToLocalDateTime(date).getMonth().getValue();
}
/**
*
*
* @param date
* @return
*/
public static LocalDate newThisMonth(Date date) {
LocalDate localDate = dateToLocalDate(date);
return LocalDate.of(localDate.getYear(), localDate.getMonth(), 1);
}
/**
*
*
* @param date
* @return
*/
public static LocalDate lastThisMonth(Date date) {
int lastDay = getActualMaximum(date);
LocalDate localDate = dateToLocalDate(date);
return LocalDate.of(localDate.getYear(), localDate.getMonth(), lastDay);
}
/**
*
*
* @param date
* @return
*/
public static LocalDate newThisYear(Date date) {
LocalDate localDate = dateToLocalDate(date);
return LocalDate.of(localDate.getYear(), 1, 1);
}
public static void main(String[] args) {
}
public static Timestamp getCurrentDateTime() {
return new Timestamp(Instant.now().toEpochMilli());
}
/**
*
*
* @return LocalDateTime
*/
public static LocalDateTime getCurrentLocalDateTime() {
return LocalDateTime.now(Clock.system(ZoneId.of("Asia/Shanghai")));
}
/**
*
*
* @param date
* @param customTime "hh:mm:ss"
*/
public static LocalDateTime reserveDateCustomTime(Date date, String customTime) {
String dateStr = dateToLocalDate(date).toString() + " " + customTime;
return stringToLocalDateTime(dateStr, "yyyy-MM-dd HH:mm:ss");
}
/**
*
*
* @param date
* @param customTime "hh:mm:ss"
*/
public static LocalDateTime reserveDateCustomTime(Timestamp date, String customTime) {
String dateStr = timestampToLocalDate(date).toString() + " " + customTime;
return stringToLocalDateTime(dateStr, "yyyy-MM-dd HH:mm:ss");
}
/**
* 0 (yyyy-MM-dd 00:00:00:000)
*
* @param date
* @return LocalDateTime
*/
public static final LocalDateTime zerolizedTime(Date date) {
LocalDateTime localDateTime = dateToLocalDateTime(date);
return LocalDateTime.of(localDateTime.getYear(), localDateTime.getMonth(), localDateTime.getDayOfMonth(), 0, 0, 0, 0);
}
/**
* (yyyy-MM-dd 00:00:00:000)
*
* @param date
* @return LocalDateTime
*/
public static LocalDateTime zerolizedTime(Timestamp date) {
LocalDateTime localDateTime = timestampToLocalDateTime(date);
return LocalDateTime.of(localDateTime.getYear(), localDateTime.getMonth(), localDateTime.getDayOfMonth(), 0, 0, 0, 0);
}
/**
* (yyyy-MM-dd 23:59:59:999)
*
* @param date
* @return LocalDateTime
*/
public static LocalDateTime getEndTime(Date date) {
LocalDateTime localDateTime = dateToLocalDateTime(date);
return LocalDateTime.of(localDateTime.getYear(), localDateTime.getMonth(), localDateTime.getDayOfMonth(), 23, 59, 59, 999 * 1000000);
}
/**
* (yyyy-MM-dd 23:59:59:999)
*
* @param date
* @return LocalDateTime
*/
public static LocalDateTime getEndTime(Timestamp date) {
LocalDateTime localDateTime = timestampToLocalDateTime(date);
return LocalDateTime.of(localDateTime.getYear(), localDateTime.getMonth(), localDateTime.getDayOfMonth(), 23, 59, 59, 999 * 1000000);
}
/**
* 23.59.59.999
*
* @return
*/
public static int calculateToEndTime(Date date) {
LocalDateTime localDateTime = dateToLocalDateTime(date);
LocalDateTime end = getEndTime(date);
return (int) (end.toEpochSecond(ZoneOffset.UTC) - localDateTime.toEpochSecond(ZoneOffset.UTC));
}
/**
* / / / / / /
*
* @param localDateTime :ChronoUnit.DAYS
* @param chronoUnit
* @param num
* @return LocalDateTime
*/
public static LocalDateTime addTime(LocalDateTime localDateTime, ChronoUnit chronoUnit, int num) {
return localDateTime.plus(num, chronoUnit);
}
/**
* / / / / / /
*
* @param chronoUnit :ChronoUnit.DAYS
* @param num
* @return LocalDateTime
*/
public static LocalDateTime addTime(Date date, ChronoUnit chronoUnit, int num) {
long nanoOfSecond = (date.getTime() % 1000) * 1000000;
LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(date.getTime() / 1000, (int) nanoOfSecond, ZoneOffset.of("+8"));
return localDateTime.plus(num, chronoUnit);
}
/**
* / / / / / /
*
* @param chronoUnit :ChronoUnit.DAYS
* @param num
* @return LocalDateTime
*/
public static LocalDateTime addTime(Timestamp date, ChronoUnit chronoUnit, int num) {
long nanoOfSecond = (date.getTime() % 1000) * 1000000;
LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(date.getTime() / 1000, (int) nanoOfSecond, ZoneOffset.of("+8"));
return localDateTime.plus(num, chronoUnit);
}
/**
* Date LocalDateTime
*
* @param date
* @return LocalDateTime
*/
public static LocalDateTime dateToLocalDateTime(Date date) {
long nanoOfSecond = (date.getTime() % 1000) * 1000000;
LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(date.getTime() / 1000, (int) nanoOfSecond, ZoneOffset.of("+8"));
return localDateTime;
}
/**
* Timestamp LocalDateTime
*
* @param date
* @return LocalDateTime
*/
public static LocalDateTime timestampToLocalDateTime(Timestamp date) {
LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(date.getTime() / 1000, date.getNanos(), ZoneOffset.of("+8"));
return localDateTime;
}
/**
* Date LocalDateTime
*
* @param date
* @return LocalDate
*/
public static LocalDate dateToLocalDate(Date date) {
return dateToLocalDateTime(date).toLocalDate();
}
/**
* timestamp LocalDateTime
*
* @param date
* @return LocalDate
*/
public static LocalDate timestampToLocalDate(Timestamp date) {
return timestampToLocalDateTime(date).toLocalDate();
}
/**
* LocalDateTime
*
* @param begin
* @param end
* @return
*/
public static boolean isTheSameDay(LocalDateTime begin, LocalDateTime end) {
return begin.toLocalDate().equals(end.toLocalDate());
}
/**
* LocalDateTime
*
* @param time1
* @param time2
* @return 1: ;0: ;-1:
*/
public static int compareTwoTime(LocalDateTime time1, LocalDateTime time2) {
if (time1.isAfter(time2)) {
return 1;
} else if (time1.isBefore(time2)) {
return -1;
} else {
return 0;
}
}
/**
* time1,time2 , time1<=time2, 0
*
* @param time1
* @param time2
*/
public static long getTwoTimeDiffSecond(Timestamp time1, Timestamp time2) {
long diff = timestampToLocalDateTime(time1).toEpochSecond(ZoneOffset.UTC) - timestampToLocalDateTime(time2).toEpochSecond(ZoneOffset.UTC);
if (diff > 0) {
return diff;
} else {
return 0;
}
}
/**
* time1,time2 , time1<=time2, 0
*
* @param time1
* @param time2
*/
public static long getTwoTimeDiffMin(Timestamp time1, Timestamp time2) {
long diff = getTwoTimeDiffSecond(time1, time2) / 60;
if (diff > 0) {
return diff;
} else {
return 0;
}
}
/**
* time1,time2 , time1<=time2, 0
*
* @param time1
* @param time2
*/
public static long getTwoTimeDiffHour(Timestamp time1, Timestamp time2) {
long diff = getTwoTimeDiffSecond(time1, time2) / 3600;
if (diff > 0) {
return diff;
} else {
return 0;
}
}
/**
*
*
* @param startTime
* @param endTime
* @return
*/
public static boolean isTimeInRange(Date startTime, Date endTime) throws Exception {
LocalDateTime now = getCurrentLocalDateTime();
LocalDateTime start = dateToLocalDateTime(startTime);
LocalDateTime end = dateToLocalDateTime(endTime);
return (start.isBefore(now) && end.isAfter(now)) || start.isEqual(now) || end.isEqual(now);
}
}
http://blog.csdn.net/chenleixing/article/details/44408875
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.