DateUtil.java 5.71 KB
   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
package com.lyms.talkonlineweb.util;

import lombok.extern.slf4j.Slf4j;

import java.text.DateFormat;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

/**
* @ProjectName: talkonline
* @Package: com.lyms.talkonlineweb.util
* @ClassName: DateUtil
* @Author: lqy
* @Description: 时间格式类
* @Date: 2021-09-07 17:53
* @Version:
*/
public class DateUtil {
/**
* 缓存时间格式化
*/
private static ConcurrentHashMap<String, DateFormat> dateFormatCache = new ConcurrentHashMap<String, DateFormat>();
private static Lock lock = new ReentrantLock();

public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
public static final String YYYY_MM_DD = "yyyy-MM-dd";
public static SimpleDateFormat dd = new SimpleDateFormat("dd");
public static SimpleDateFormat yyyy = new SimpleDateFormat("yyyy");
public static SimpleDateFormat yyyyMM = new SimpleDateFormat("yyyyMM");
public static SimpleDateFormat ymd = new SimpleDateFormat("yyyyMMdd");
public static SimpleDateFormat y_m_d = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat y_m = new SimpleDateFormat("yyyy年MM月");

public static SimpleDateFormat y_m_d1 = new SimpleDateFormat("yyyy年MM月dd日");
public static SimpleDateFormat md = new SimpleDateFormat("MM-dd");
public static SimpleDateFormat m_d = new SimpleDateFormat("MM/dd");
public static SimpleDateFormat y_m_d_h_m_s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static SimpleDateFormat y_m_d_h_m1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
public static SimpleDateFormat y_m_d_h = new SimpleDateFormat("yyyy-MM-dd HH");
public static String[] parsePatterns = {"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss",
"yyyy/MM/dd HH:mm"};

public static SimpleDateFormat yyyyMMddHHmmss = new SimpleDateFormat("yyyyMMddHH:mm:ss");

public static SimpleDateFormat yyyy_mm = new SimpleDateFormat("yyyy-MM");

public static SimpleDateFormat y_m_d_h_m = new SimpleDateFormat("yyyyyMMddHHmm");
public static SimpleDateFormat yyyyMMddHHmmssSSS = new SimpleDateFormat("yyyyMMddHHmmssSSS");
public static final int DAY_SECONDS = 86399;
public static final int DAY_FULL_SECONDS = 86400;


/**
* 私有构造方法,禁止对该类进行实例化
*/
private DateUtil() {
}

public static String getYyyyMmDdHhMmSs(Date datetime) {
return getDateTime(datetime, YYYY_MM_DD_HH_MM_SS);
}

public static Date parseYMD(String s) {
if (s == null) {
return null;
}
lock.lock();
try {

return y_m_d.parse(s);
} catch (Exception e) {
return null;
} finally {
lock.unlock();
}
}

public static String getDateTime(Date date, String pattern) {
if (date == null) {
return "";
}

DateFormat format = getDateFormat(pattern);
lock.lock();
try {
return format.format(date);
} finally {
lock.unlock();
}
}

public static DateFormat getDateFormat(String pattern) {
if (StringUtil.isEmpty(pattern)) {
pattern = YYYY_MM_DD;
}

if (dateFormatCache.get(pattern) != null) {
return dateFormatCache.get(pattern);
}
lock.lock();
try {
DateFormat format = new SimpleDateFormat(pattern);
dateFormatCache.put(pattern, format);
return format;
} catch (Exception e) {
} finally {
lock.unlock();
}
return null;
}

public static String getSeqString() {
SimpleDateFormat fm = new SimpleDateFormat("yyMMddHHmmss");
return fm.format(new Date());
}

/**
* 时分秒清 yyyy-MM-dd 00:00:00
* @param date
* @return
*/
public static Date getYmdDate(Date date) {
try {
date.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(y_m_d.format(date)).getTime());
} catch (Exception e) {
e.printStackTrace();
}
return date;
}

/**
* 传入时间,增加天数
* @param srcDate
* @param days
* @return
*/
public static Date addDay(Date srcDate, int days) {
lock.lock();
try {

Calendar rightNow = Calendar.getInstance();
rightNow.setTime(srcDate);
rightNow.add(Calendar.DAY_OF_YEAR, days);
return rightNow.getTime();
} finally {
lock.unlock();
}
}
public static Integer getAge(Date birth) {
if (null == birth) {
return null;
}
java.util.Calendar calendar = Calendar.getInstance();
Date date = new Date();
calendar.setTime(date);

Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.setTime(date);
c2.setTime(birth);
int year1 = c1.get(Calendar.YEAR);
int year2 = c2.get(Calendar.YEAR);

int mouth1 = c1.get(Calendar.MONTH);//0当前
int mouth2 = c2.get(Calendar.MONTH);//4
int i = 0;

if (mouth2 == mouth1) {
int days1 = c1.get(Calendar.DAY_OF_MONTH);//当前10
int days2 = c2.get(Calendar.DAY_OF_MONTH);//1
if (days1 < days2) {
i = i - 1;
} else if (days1 > days2) {
}
} else if (mouth2 > mouth1) {
i = i - 1;
}

return (Math.abs(year1 - year2) + i);
}
}