import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public final class DateUtil {
private static Map<String, ThreadLocal<SimpleDateFormat>> SDF_MAP = new HashMap<>();
static {
String formats[] ={"M.d","yyyy-MM-dd", "yyyy/MM/dd", "yyyy-MM-dd HH:mm:ss", "yyyyMMddhhmmss",
"yyyyMMdd", "yyyyMMddhhmmssSSS", "yyyyMM", "yyyy/MM/dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy.MM.dd","yyyy.MM.dd HH:mm","yyyy.MM.dd HH", "MMdd"};
for(String format : formats){
SDF_MAP.put(format, new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat(format);
}
});
}
}
/**
* MM.dd
*/
public static SimpleDateFormat SDF0() {
return SDF_MAP.get("M.d").get();
}
/**
* yyyy-MM-dd
*/
public static SimpleDateFormat SDF1() {
return SDF_MAP.get("yyyy-MM-dd").get();
}
/**
* yyyy/MM/dd
*/
public static SimpleDateFormat SDF2() {
return SDF_MAP.get("yyyy/MM/dd").get();
}
/**
* yyyy-MM-dd HH:mm:ss
*/
public static SimpleDateFormat SDF3() {
return SDF_MAP.get("yyyy-MM-dd HH:mm:ss").get();
}
/**
* yyyyMMddhhmmss
*/
public static SimpleDateFormat SDF4() {
return SDF_MAP.get("yyyyMMddhhmmss").get();
}
/**
* yyyyMMdd
*/
public static SimpleDateFormat SDF5() {
return SDF_MAP.get("yyyyMMdd").get();
}
/**
* yyyyMMddhhmmssSSS
*/
public static SimpleDateFormat SDF6() {
return SDF_MAP.get("yyyyMMddhhmmssSSS").get();
}
/**
* yyyyMM
*/
public static SimpleDateFormat SDF7() {
return SDF_MAP.get("yyyyMM").get();
}
/**
* yyyy/MM/dd HH:mm:ss
*/
public static SimpleDateFormat SDF8() {
return SDF_MAP.get("yyyy/MM/dd HH:mm:ss").get();
}
/**
* yyyy-MM-dd HH:mm:ss
*/
public static SimpleDateFormat SDF9() {
return SDF_MAP.get("yyyy-MM-dd HH:mm").get();
}
/**
* yyyy.MM.dd
*/
public static SimpleDateFormat SDF12() {
return SDF_MAP.get("yyyy.MM.dd HH:mm").get();
}
public static SimpleDateFormat SDF10() {
return SDF_MAP.get("yyyy.MM.dd").get();
}
/**
* MMdd
*/
public static SimpleDateFormat SDF11() {
return SDF_MAP.get("MMdd").get();
}
/**
* MMdd
*/
public static SimpleDateFormat SDF13() {
return SDF_MAP.get("yyyy.MM.dd HH").get();
}
/**
* 增加天数(负值为减)
*/
public static synchronized Date addDay(Date d, int dayToAdd) {
Calendar ca = Calendar.getInstance();
ca.setTime(d);
ca.add(Calendar.DAY_OF_MONTH, dayToAdd);
return ca.getTime();
}
/**
* 增加小时(负值为减)
*/
public static synchronized Date addHour(Date d, int hour) {
Calendar ca = Calendar.getInstance();
ca.setTime(d);
ca.add(Calendar.HOUR, hour);
return ca.getTime();
}
/**
* 增加分钟(负值为减)
*/
public static synchronized Date addMinutes(Date d, int minutes) {
Calendar ca = Calendar.getInstance();
ca.setTime(d);
ca.add(Calendar.MINUTE, minutes);
return ca.getTime();
}
/**
* 当前时间月份加减月份(负值为减)
*/
public static synchronized int getMonth(Date d, int num) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(d);
int month = calendar.get(Calendar.MONTH) + num;
return month;
}
/**
* 判断当天是当前月的第几天
*/
public static synchronized int getToday(Date d) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
int today = calendar.get(calendar.DAY_OF_MONTH);
return today;
}
/**
* 增加秒数(负值为减)
*/
public static synchronized Date addSeconds(Date d, int seconds) {
Calendar ca = Calendar.getInstance();
ca.setTime(d);
ca.add(Calendar.SECOND, seconds);
return ca.getTime();
}
/**
* 获取日期的起始2012-12-12 return 2012-12-12 00:00:00
*/
public static synchronized Date getStartDayTime(String source) throws ParseException {
return SDF3().parse(source + " 00:00:00");
}
/**
* 获取日期的结束2012-12-12 return 2012-12-12 23:59:59
*/
public static synchronized Date getEndDayTime(String source) throws ParseException {
return SDF3().parse(source + " 23:59:59");
}
/**
* 获取不同日期格式
*/
public static synchronized Date getDateTime(String source, SimpleDateFormat formart) throws ParseException{
return formart.parse(source);
}
/**
* 增加秒数(负值为减)
*/
public static synchronized int getDiffDays(Date d1, Date d2) {
long t1 = d1.getTime();
long t2 = d2.getTime();
int days = (int) ((t2 - t1) / (24 * 60 * 60 * 1000));
return days;
}
public static Date getDate(int hour,int minute,int second,int millisecond){
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY,hour);
calendar.set(Calendar.MINUTE,minute);
calendar.set(Calendar.SECOND,second);
calendar.set(Calendar.MILLISECOND,millisecond);
return calendar.getTime();
}
//计算两个时间之间的天数只差
public static int daysBetween(Date date1,Date date2)
{
Calendar cal = Calendar.getInstance();
cal.setTime(date1);
long time1 = cal.getTimeInMillis();
cal.setTime(date2);
long time2 = cal.getTimeInMillis();
long between_days=(time2-time1)/(1000*3600*24);
return Integer.parseInt(String.valueOf(between_days));
}
public static boolean isSameDay(Date date){
Calendar paramDate = Calendar.getInstance();
paramDate.setTime(date);
int param_year = paramDate.get(Calendar.YEAR);
int param_month = paramDate.get(Calendar.MONTH);
int param_day = paramDate.get(Calendar.DAY_OF_MONTH);
Calendar currentDate = Calendar.getInstance();
int year = currentDate.get(Calendar.YEAR);
int month = currentDate.get(Calendar.MONTH);
int day = currentDate.get(Calendar.DAY_OF_MONTH);
if(param_year!=year){
return false;
}
if(param_month!=month){
return false;
}
if(param_day!=day){
return false;
}
return true;
}
}
import org.springframework.stereotype.Component;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
@Component
public class LocalDateTimeUtil {
private static final DateTimeFormatter formatter0 = DateTimeFormatter.ofPattern("M.d");
private static final DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
private static final DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
private static final DateTimeFormatter formatter13 = DateTimeFormatter.ofPattern("yyyy.MM.dd HH");
public static String formatter0(LocalDateTime date) {
return formatter0.format(date);
}
public static String formatter1(LocalDateTime date) {
return formatter1.format(date);
}
public static String formatter3(LocalDateTime date) {
return formatter3.format(date);
}
public static String formatter13(LocalDateTime date) {
return formatter13.format(date);
}
/**
* 获取日期的起始2012-12-12 return 2012-12-12 00:00:00
*/
public static Date getStartDayTime(String source) throws ParseException {
return toDate(LocalDateTime.parse(source + " 00:00:00",formatter3));
}
/**
* 获取日期的结束2012-12-12 return 2012-12-12 23:59:59
*/
public static Date getEndDayTime(String source) throws ParseException {
return toDate(LocalDateTime.parse(source + " 23:59:59",formatter3));
}
/**
* 增加天数(负值为减)
*/
public static synchronized Date addDay(Date d, int dayToAdd) {
Calendar ca = Calendar.getInstance();
ca.setTime(d);
ca.add(Calendar.DAY_OF_MONTH, dayToAdd);
return ca.getTime();
}
/**
* 获取不同日期格式
*/
public static synchronized Date getDateTime(String source, SimpleDateFormat formart) throws ParseException{
return formart.parse(source);
}
private static LocalDateTime toLocalDateTime(Date date) {
ZoneId zone = ZoneId.systemDefault();
Instant instant = date.toInstant();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant,zone);
return localDateTime;
}
private static Date toDate(LocalDateTime localDateTime) {
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zone).toInstant();
Date date = Date.from(instant);
return date;
}
}