import java.lang.management.ManagementFactory;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.alibaba.fastjson.JSON;
import com.union.test.XmlUtils;
import io.swagger.models.auth.In;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.poi.ss.usermodel.DateUtil;
import org.dom4j.DocumentException;
import org.json.JSONObject;
import org.omg.CORBA.PUBLIC_MEMBER;
public class DateUtils extends org.apache.commons.lang3.time.DateUtils
{
public static String YYYY = "yyyy";
public static String YYYY_MM = "yyyy-MM";
public static String MMDD = "MMdd";
public static String YYYY_MM_DD = "yyyy-MM-dd";
public static String YYYYMMDD = "yyyyMMdd";
public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
private static String[] parsePatterns = {
"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
"yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",
"yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"};
public static Date getNowDate()
{
return new Date();
}
public static String getDate()
{
return dateTimeNow(YYYY_MM_DD);
}
public static String getNowDatee(){return dateTimeNow(MMDD);}
public static String getYyyyMmDd(){
return dateTimeNow(YYYYMMDD);
}
public static final String getTime()
{
return dateTimeNow(YYYY_MM_DD_HH_MM_SS);
}
public static final String dateTimeNow()
{
return dateTimeNow(YYYYMMDDHHMMSS);
}
public static final String dateTimeNow(final String format)
{
return parseDateToStr(format, new Date());
}
public static final String dateTime(final Date date)
{
return parseDateToStr(YYYY_MM_DD, date);
}
public static final String parseDateToStr(final String format, final Date date)
{
return new SimpleDateFormat(format).format(date);
}
public static final Date dateTime(final String format, final String ts)
{
try
{
return new SimpleDateFormat(format).parse(ts);
}
catch (ParseException e)
{
throw new RuntimeException(e);
}
}
public static final String datePath()
{
Date now = new Date();
return DateFormatUtils.format(now, "yyyy/MM/dd");
}
public static final String dateTime()
{
Date now = new Date();
return DateFormatUtils.format(now, "yyyyMMdd");
}
public static String stampToDate(String s){
String res;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
long lt = new Long(s);
Date date = new Date(lt);
res = simpleDateFormat.format(date);
return res;
}
public static Date string2Date(String time){
SimpleDateFormat format = new SimpleDateFormat( "yyyy-MM-dd" );
Date date = null;
try {
date = format.parse(time);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
public static Date string2Dates(String time){
SimpleDateFormat format = new SimpleDateFormat( "yyyy-MM-dd hh:mm" );
Date date = null;
try {
date = format.parse(time);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
public static Date string2Datess(String time){
SimpleDateFormat format = new SimpleDateFormat( "yyyy-MM-dd" );
Date date = null;
try {
date = format.parse(time);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
public static Date getServerStartDate()
{
long time = ManagementFactory.getRuntimeMXBean().getStartTime();
return new Date(time);
}
public static String getDatePoor(Date endDate, Date nowDate)
{
long nd = 1000 * 24 * 60 * 60;
long nh = 1000 * 60 * 60;
long nm = 1000 * 60;
long diff = endDate.getTime() - nowDate.getTime();
long day = diff / nd;
long hour = diff % nd / nh;
long min = diff % nd % nh / nm;
return day + "天" + hour + "小时" + min + "分钟";
}
public static String getStringDate(){
SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(s.format(new Date()));
return s.format(new Date());
}
public static String getYyyyMMddDate(){
SimpleDateFormat s = new SimpleDateFormat("yyyyMMdd");
System.out.println(s.format(new Date()));
return s.format(new Date());
}
public static String getStrYear(String strs){
SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
String str = "-"+strs;
Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.YEAR, Integer.parseInt(str));
return s.format(calendar.getTime());
}
public static final String getYesterday() throws ParseException {
DateFormat d = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(d.parse(DateUtils.getDate()));
c.set(Calendar.DATE, c.get(Calendar.DATE)-1);
String t = d.format(c.getTime());
String parseDate=t.replaceAll("-","");
return parseDate;
}
public static final String getYesterDay(String dateTime) throws ParseException {
DateFormat d = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(d.parse(dateTime));
c.set(Calendar.DATE, c.get(Calendar.DATE)-1);
String t = d.format(c.getTime());
return t;
}
public static final String getYueLastDay(String dateTime){
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar=Calendar.getInstance();
try {
calendar.setTime(sf.parse(dateTime));
} catch (ParseException e) {
e.printStackTrace();
}
int month=calendar.get(Calendar.MONTH);
calendar.set(Calendar.MONTH, month-1);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
String date=sf.format(calendar.getTime());
return date;
}
public static String getLastDay(String date) throws ParseException {
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.setTime(sf.parse(date));
calendar.add(Calendar.MONTH,-3);
int year = calendar.get(Calendar.YEAR);
int mouth = calendar.get(Calendar.MONTH);
String mmdd = "";
switch( mouth){
case 1:
case 2:
case 3:
mmdd = "3-31";
break;
case 4:
case 5:
case 6:
mmdd = "6-30";
break;
case 7:
case 8:
case 9:
mmdd = "9-30";
break;
case 10:
case 11:
case 12:
mmdd = "12-31";
break;
}
String lastDate = String.valueOf(year) + "-" + mmdd;
return lastDate;
}
public static int getShangNian(String dateTime) throws ParseException {
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
Calendar curr = Calendar.getInstance();
curr.setTime(sf.parse(dateTime));
curr.set(Calendar.YEAR,curr.get(Calendar.YEAR)-1);
int date=curr.get(Calendar.YEAR);
return date;
}
public static String getYearLast(String dateTime) throws ParseException {
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
Calendar curr = Calendar.getInstance();
curr.setTime(sf.parse(dateTime));
curr.set(Calendar.YEAR,curr.get(Calendar.YEAR)-1);
int date=curr.get(Calendar.YEAR);
curr.clear();
curr.set(Calendar.YEAR, date);
curr.roll(Calendar.DAY_OF_YEAR, -1);
Date currYearLast = curr.getTime();
return sf.format(currYearLast).toString();
}
public static Date parseDate(Object str)
{
if (str == null)
{
return null;
}
try
{
return parseDate(str.toString(), parsePatterns);
}
catch (ParseException e)
{
return null;
}
}
public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) {
Calendar date = Calendar.getInstance();
date.setTime(nowTime);
Calendar begin = Calendar.getInstance();
begin.setTime(beginTime);
Calendar end = Calendar.getInstance();
end.setTime(endTime);
if (date.after(begin) && date.before(end)) {
return true;
} else {
return false;
}
}
public static String getDay(String date){
SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date startDate= null;
try {
startDate = dateFormat.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
Date beginDate=new Date();
long nd = 1000 * 24 * 60 * 60;
long diff = beginDate.getTime() - startDate.getTime();
long day = diff / nd;
return String.valueOf(day);
}
public static String getWeek(String dateTime){
String week = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = sdf.parse(dateTime);
SimpleDateFormat dateFm = new SimpleDateFormat("EEEE");
week = dateFm.format(date);
week=week.replaceAll("星期","周");
}catch (ParseException e){
e.printStackTrace();
}
return week;
}
public static ArrayList<String> getDays(int intervals) {
ArrayList<String> pastDaysList = new ArrayList<>();
for (int i = intervals -1; i >= 0; i--) {
pastDaysList.add(getPastDate(i));
}
return pastDaysList;
}
public static String getPastDate(int past) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - past);
Date today = calendar.getTime();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String result = format.format(today);
return result;
}
public static String getFirstDayOfMonth(int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, month - 1);
int firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
cal.set(Calendar.DAY_OF_MONTH, firstDay);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String firstDayOfMonth = sdf.format(cal.getTime())+" 00:00:00";
return firstDayOfMonth;
}
public static String getLastDayOfMonth(int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, month - 1);
int lastDay=0;
if(month==2) {
lastDay = cal.getLeastMaximum(Calendar.DAY_OF_MONTH);
}else {
lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
}
cal.set(Calendar.DAY_OF_MONTH, lastDay);
SimpleDateFormat sdf = new SimpleDateFormat("dd");
String lastDayOfMonth = sdf.format(cal.getTime());
return lastDayOfMonth;
}
public static List<String> getSixMonth(String date) {
List<String> list = new ArrayList<String>();
int month = Integer.parseInt(date.substring(6, 7));
int year = Integer.parseInt(date.substring(0, 4));
for (int i = 6; i >= 0; i--) {
if (month > 7) {
if (month - i >= 10) {
list.add(year + "-" + String.valueOf(month - i));
} else {
list.add(year + "-0" + String.valueOf(month - i));
}
} else {
if (month - i <= 0) {
if (month - i + 12 >= 10) {
list.add(String.valueOf(year - 1) + "-" + String.valueOf(month - i + 12));
} else {
list.add(String.valueOf(year - 1) + "-0" + String.valueOf(month - i + 12));
}
} else {
if (month - i >= 10) {
list.add(String.valueOf(year) + "-" + String.valueOf(month - i));
} else {
list.add(String.valueOf(year) + "-0" + String.valueOf(month - i));
}
}
}
}
return list;
}
public static List<String> getSixM(String date){
List<String> list = getSixMonth(date);
list.remove(6);
List<String> dateList = new ArrayList<>();
for(String str:list){
String [] arr = str.split("-");
String dates = str+DateUtils.getLastDayOfMonth(Integer.parseInt(arr[1]));
dateList.add(dates.replace("-",""));
}
return dateList;
}
public static String getNowYue(){
String aa = "";
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH )+1;
if(month < 10){
aa = year + "-0" + month;
}else {
aa = year + "-" + month;
}
return aa;
}
public static Integer getQianDay(Integer today){
SimpleDateFormat sj = new SimpleDateFormat("yyyyMMdd");
Date d = null;
try {
d = sj.parse(today.toString());
} catch (ParseException e) {
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(d);
calendar.add(Calendar.DATE, 1);
calendar.add(calendar.DATE, -2);
Integer dates = Integer.parseInt(sj.format(calendar.getTime()));
return dates;
}
public static String toNumber1(Double number) {
String str = "";
if (number <= 0) {
str = "";
} else {
double d = (double) number;
double num = d / 10000;
BigDecimal b = new BigDecimal(num);
double f1 = b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
str = f1+"";
}
return str;
}
}